{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:00:56.289970Z",
     "start_time": "2020-06-18T03:00:56.109491Z"
    }
   },
   "outputs": [],
   "source": [
    "%reload_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "from utils import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:00:57.126550Z",
     "start_time": "2020-06-18T03:00:57.023520Z"
    }
   },
   "outputs": [],
   "source": [
    "fpath = 'qa_corpus.csv'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:01:15.545419Z",
     "start_time": "2020-06-18T03:00:59.053920Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:01:17.845358Z",
     "start_time": "2020-06-18T03:01:17.453759Z"
    }
   },
   "outputs": [],
   "source": [
    "content = pd.read_csv(fpath, encoding='utf-8')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:01:20.720771Z",
     "start_time": "2020-06-18T03:01:20.508774Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>qid</th>\n",
       "      <th>question</th>\n",
       "      <th>answer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>补发网银盾</td>\n",
       "      <td>您可以到智慧柜员机办理此项业务，方便快捷，节省您的宝贵时间哦。若去柜台办理，请刷身份证取号。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>代发工资</td>\n",
       "      <td>您要办理的是对公开户、销户、签约及其他业务。请刷身份证，小龙人来帮您取个号吧。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>对帐单查询打印</td>\n",
       "      <td>您要办理的是对公开户、销户、签约及其他业务。请刷身份证，小龙人来帮您取个号吧。</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>理财产品取号</td>\n",
       "      <td>请说出您需要办理的业务</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>密码修改</td>\n",
       "      <td>请您带上身份证到自助柜员机办理，简单快捷，操作容易哦。</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  qid question                                          answer\n",
       "0   1    补发网银盾  您可以到智慧柜员机办理此项业务，方便快捷，节省您的宝贵时间哦。若去柜台办理，请刷身份证取号。\n",
       "1   2     代发工资         您要办理的是对公开户、销户、签约及其他业务。请刷身份证，小龙人来帮您取个号吧。\n",
       "2   3  对帐单查询打印         您要办理的是对公开户、销户、签约及其他业务。请刷身份证，小龙人来帮您取个号吧。\n",
       "3   4   理财产品取号                                     请说出您需要办理的业务\n",
       "4   5     密码修改                     请您带上身份证到自助柜员机办理，简单快捷，操作容易哦。"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "content.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:05:59.142165Z",
     "start_time": "2020-06-18T03:05:56.790368Z"
    }
   },
   "outputs": [],
   "source": [
    "import jieba\n",
    "import re\n",
    "\n",
    "\n",
    "import os\n",
    "LTP_DATA_DIR = 'D:/ProgramData/nlp_package/ltp_v34'  # ltp模型目录的路径\n",
    "cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')  # 分词模型路径，模型名称为`cws.model`\n",
    "\n",
    "from pyltp import Segmentor\n",
    "segmentor = Segmentor()  # 初始化实例\n",
    "segmentor.load_with_lexicon(cws_model_path, 'lexicon_seg.txt') # 加载外部词典文件路径\n",
    "\n",
    "\n",
    "def token(string):\n",
    "    return re.findall(r'[\\d|\\w]+', string)\n",
    "\n",
    "def cut(string): \n",
    "    return ' '.join(segmentor.segment(string))\n",
    "\n",
    "def filter_text(content):\n",
    "    q_content = content['question'].tolist()\n",
    "    q_content = [token(str(n)) for n in q_content]\n",
    "    q_content = [' '.join(n) for n in q_content]\n",
    "    q_content = [cut(n) for n in q_content]\n",
    "    return q_content"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "segmentor.release()  # 释放模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# from pyhanlp import *\n",
    "\n",
    "# tokenizer = JClass(\"com.hankcs.hanlp.seg.NShort.NShortSegment\")\n",
    "# tokenizer2 = JClass(\"com.hankcs.hanlp.tokenizer.NLPTokenizer\")\n",
    "# tokenizer3 = JClass('com.hankcs.hanlp.tokenizer.StandardTokenizer')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:10.837218Z",
     "start_time": "2020-06-18T03:06:08.085715Z"
    }
   },
   "outputs": [],
   "source": [
    "q_content = filter_text(content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:11.787296Z",
     "start_time": "2020-06-18T03:06:11.613268Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'如何 注销 E 商贸通'"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q_content[21231]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:26.817176Z",
     "start_time": "2020-06-18T03:06:26.614116Z"
    },
    "tags": [
     "outputPrepend",
     "outputPrepend"
    ]
   },
   "outputs": [],
   "source": [
    "# for text in q_content:\n",
    "#     if '办理' in text:\n",
    "#         print(text)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:28.886896Z",
     "start_time": "2020-06-18T03:06:28.680841Z"
    }
   },
   "outputs": [],
   "source": [
    "stopwords = []\n",
    "with open('chinese_stopwords.txt', 'r', encoding='utf-8') as f:\n",
    "    for line in f.readlines():\n",
    "        if len(line.strip()) < 2:\n",
    "            stopwords.append(line.strip())\n",
    "\n",
    "with open('哈工大停用词表.txt', 'r', encoding='utf-8') as f:\n",
    "    for line in f.readlines():\n",
    "        if len(line.strip()) < 2:\n",
    "            stopwords.append(line.strip())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### tf-idf\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:31.864811Z",
     "start_time": "2020-06-18T03:06:31.509778Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "11133\n",
      "(32526, 11133)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\envs\\nlpLearning\\lib\\site-packages\\sklearn\\feature_extraction\\text.py:286: UserWarning: Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens ['δ', 'ψ', 'в', 'ⅲ', 'ａ'] not in stop_words.\n",
      "  sorted(inconsistent))\n"
     ]
    }
   ],
   "source": [
    "# 注意，自定义了analyzer\n",
    "vectorized = TfidfVectorizer(max_features=12000, tokenizer=lambda x: x.split(), stop_words=stopwords)\n",
    "X = vectorized.fit_transform(q_content)\n",
    "\n",
    "print(len(vectorized.vocabulary_))\n",
    "print(X.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:44.467440Z",
     "start_time": "2020-06-18T03:06:39.693844Z"
    }
   },
   "outputs": [],
   "source": [
    "import scipy.sparse as sp\n",
    "\n",
    "\n",
    "X_array = X.toarray()\n",
    "X_array = sp.csr_matrix(X_array)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:52.593290Z",
     "start_time": "2020-06-18T03:06:52.398279Z"
    }
   },
   "outputs": [],
   "source": [
    "# word_2_id = vectorized.vocabulary_\n",
    "\n",
    "# for word, i in word_2_id.items():\n",
    "#     if len(word) < 2:\n",
    "#         print(word)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:55.579383Z",
     "start_time": "2020-06-18T03:06:55.382386Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 5278,  9413,  9499, 10423], dtype=int64),)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "\n",
    "np.nonzero(X[100].toarray()[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:06:58.065957Z",
     "start_time": "2020-06-18T03:06:57.885961Z"
    }
   },
   "outputs": [],
   "source": [
    "from scipy.spatial.distance import cosine\n",
    "\n",
    "def distance(v1, v2): return cosine(v1, v2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:07:00.859666Z",
     "start_time": "2020-06-18T03:07:00.694645Z"
    }
   },
   "outputs": [],
   "source": [
    "def show_diff(i1, i2):\n",
    "    print(content.question.iloc[i1])\n",
    "    print(content.question.iloc[i2])\n",
    "\n",
    "    print(distance(X_array[i1].toarray()[0], X_array[i2].toarray()[0]))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:07:01.473594Z",
     "start_time": "2020-06-18T03:07:01.303597Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "我可以买东西吗\n",
      "我要买东西\n",
      "0.10267861409497203\n"
     ]
    }
   ],
   "source": [
    "show_diff(1212, 1211)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:07:02.428298Z",
     "start_time": "2020-06-18T03:07:02.254267Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "如何注销E商贸通\n",
      "如何办理E商贸通出入金\n",
      "0.377988279224442\n"
     ]
    }
   ],
   "source": [
    "show_diff(21231, 21230)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:07:03.042263Z",
     "start_time": "2020-06-18T03:07:02.885295Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "如何注销E商贸通\n",
      "外汇汇款手续费\n",
      "1.0\n"
     ]
    }
   ],
   "source": [
    "show_diff(21231, 21211)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### BM25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:07:06.473919Z",
     "start_time": "2020-06-18T03:07:06.293836Z"
    }
   },
   "outputs": [],
   "source": [
    "from collections import Counter\n",
    "from math import log\n",
    "\n",
    "def get_tf(sent_i, sent_j):\n",
    "    \"\"\"计算bm25的term frequence. sent来自预处理的sent_of_words列表。\"\"\"\n",
    "    freq = {}\n",
    "    sent_i_counts = Counter(sent_i)\n",
    "    # 计算i句中的词，在j句中的tf\n",
    "    for w in sent_j:\n",
    "        # if not self.filte_words(w_item):\n",
    "        #     continue\n",
    "        if w in sent_i_counts:\n",
    "            freq[w] = sent_i_counts[w]\n",
    "        else:\n",
    "            freq[w] = 0\n",
    "    total = len(sent_i)\n",
    "    return {word: count / total for word, count in freq.items()}\n",
    "\n",
    "\n",
    "def get_idf(content):\n",
    "    \"\"\"计算inverse document frequence. 这里计算句子的相似度，所以计算inverse sentence frequence\"\"\"\n",
    "    total_sent = len(content) + 1 # 假设有一个句子包含所有词\n",
    "    avg_len = 0\n",
    "    doc_freq = {}\n",
    "    for sent in content:\n",
    "        sent = sent.lower().split()\n",
    "        avg_len += len(sent)\n",
    "        words = list({w for w in sent})\n",
    "        for word in words:\n",
    "            # 假设有一个句子包含所有词\n",
    "            count = doc_freq.setdefault(word, 1)\n",
    "            doc_freq[word] = count + 1\n",
    "    avg_len /= total_sent\n",
    "    # sklearn中的实现方式\n",
    "    idf = {word: log(total_sent / df) + 1 for word, df in doc_freq.items()}\n",
    "    return idf, avg_len\n",
    "\n",
    "\n",
    "def sent_corelation_func(sent_i, sent_j, idf, avg_len, k1=1.5, b=0.75):\n",
    "    \"\"\"计算bm25。\n",
    "\n",
    "    sent_i ： 与query对比的句子，在文档中进行遍历，D\n",
    "    sent_j : query的句子, Q\n",
    "    \"\"\"\n",
    "    tf = get_tf(sent_i, sent_j)\n",
    "\n",
    "    K = k1 * (1 - b + b * len(sent_i) / avg_len)\n",
    "    bm25 = 0\n",
    "    for j_word in sent_j:\n",
    "        bm25 += idf[j_word] * tf[j_word] * (k1 + 1) / (tf[j_word] + K)\n",
    "    return bm25"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:07:08.249007Z",
     "start_time": "2020-06-18T03:07:07.980971Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8.148892425018543"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "idf, avg_len = get_idf(q_content)\n",
    "sent_corelation_func(q_content[21231].lower().split(), q_content[21230].lower().split(), idf, avg_len)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:07:09.719586Z",
     "start_time": "2020-06-18T03:07:09.558589Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "11320"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(idf)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### 编辑距离"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### Simhash"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "### Sentence Embedding"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### fasttext"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "import fasttext"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = fasttext.load_model(\"cc.zh.300.bin\")\n",
    "\n",
    "# del model\n",
    "# model.get_word_vector('学生惠')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用fb官方模型，在任务数据上fine tuning。使用gensim进行训练。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "from gensim.models.fasttext import load_facebook_model\n",
    "\n",
    "fb_model  = load_facebook_model('cc.zh.300.bin')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'vocab': 1000000000,\n",
       " 'syn0_vocab': 2400000000,\n",
       " 'syn1neg': 2400000000,\n",
       " 'syn0_ngrams': 1474220400,\n",
       " 'buckets_word': 121864840,\n",
       " 'total': 7396085240}"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fb_model.estimate_memory()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "new_sent = list(map(lambda s: s.lower().split(), q_content))\n",
    "len(new_sent)\n",
    "\n",
    "fb_model.build_vocab(new_sent, update=True)\n",
    "fb_model.train(sentences=new_sent, total_examples=len(new_sent), epochs=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7010534"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fb_model.wv.similarity('储蓄卡','信用卡')\n",
    "fb_model.wv.similarity('开户','办理')\n",
    "fb_model.wv.similarity('贷款','存款')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "selected = []\n",
    "for w in word_2_id.keys():\n",
    "    vec = fb_model.wv[w]\n",
    "    selected.append((w, vec))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "11133"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(selected)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('selected_words_fasttext_300.txt', 'w', encoding='utf-8') as f:\n",
    "    first_line = str(len(selected)) + '\\t' + str(300)\n",
    "    f.write(first_line)\n",
    "    for w, v in selected:\n",
    "        line =  '\\n' + str(w) + '\\t' + array_to_string(v)\n",
    "        f.write(line)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "del fb_model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### tencent wordvec\n",
    "\n",
    "oov的词，包括该场景下的重要词汇，比如 联名卡， 溢缴款， 学生惠"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [],
   "source": [
    "# from gensim.models import KeyedVectors\n",
    "\n",
    "# model = KeyedVectors.load_word2vec_format(\"100000-small.txt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import io\n",
    "\n",
    "def load_vectors(fname):\n",
    "    fin = io.open(fname, 'r', encoding='utf-8', newline='\\n', errors='ignore')\n",
    "    n, d = map(int, fin.readline().split())\n",
    "    data = {}\n",
    "    for line in fin:\n",
    "        tokens = line.rstrip().split(' ')\n",
    "        data[tokens[0]] = map(float, tokens[1:])\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = load_vectors('sgns.target.word-character.char1-2.dynwin5.thr10.neg5.dim300.iter5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "636036"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "selected = []\n",
    "for w in word_2_id.keys():\n",
    "    try:\n",
    "        vec = data[w]\n",
    "        selected.append((w, vec))\n",
    "    except KeyError:\n",
    "        continue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'联名卡' in selected"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9316"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(selected)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "del data\n",
    "del selected"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### sentence vec 表示方法\n",
    "\n",
    "短文本应该有较好的变现力"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "selected = {w: v for w, v in selected}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sent_to_vec(sent):\n",
    "    res = 0\n",
    "    length = 0\n",
    "    for w in sent:\n",
    "        try:\n",
    "            res += selected[w]\n",
    "            length += 1\n",
    "        except KeyError:\n",
    "            continue\n",
    "    return res / length"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "def search_sentvec(query):\n",
    "    \"\"\"\"\"\"\n",
    "    words = filter_text(query)\n",
    "    postags = postagger.postag(words)\n",
    "\n",
    "    to_and = []\n",
    "    for i, postag in enumerate(postags):\n",
    "        if postag in and_pos_set:\n",
    "            to_and.append(words[i])\n",
    "    print(to_and)\n",
    "    \n",
    "    query_vec = words\n",
    "    try:\n",
    "        candidates_ids = [word_2_id[w] for w in to_and]\n",
    "    except KeyError:\n",
    "        pass\n",
    "\n",
    "    documents_ids = [\n",
    "         set(np.nonzero(inverse_idx[_id].toarray()[0])[0]) for _id in candidates_ids\n",
    "    ]\n",
    "\n",
    "    merged_documents = reduce(and_, documents_ids)\n",
    "    sorted_docuemtns_id = sorted(merged_documents, key=lambda i: distance(sent_to_vec(query_vec), sent_to_vec(q_content[i].lower().split())))\n",
    "\n",
    "    return sorted_docuemtns_id"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['办理龙卡']\n",
      "['办理', '龙卡']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[344,\n",
       " 21590,\n",
       " 268,\n",
       " 20460,\n",
       " 20038,\n",
       " 30928,\n",
       " 30939,\n",
       " 32362,\n",
       " 30914,\n",
       " 20563,\n",
       " 30934,\n",
       " 20942,\n",
       " 21511,\n",
       " 21006,\n",
       " 20446,\n",
       " 20035,\n",
       " 22721,\n",
       " 20617,\n",
       " 22604,\n",
       " 22636,\n",
       " 22639,\n",
       " 32090,\n",
       " 32202,\n",
       " 31033,\n",
       " 22722,\n",
       " 30938,\n",
       " 21122,\n",
       " 30941,\n",
       " 32363,\n",
       " 22635,\n",
       " 22119,\n",
       " 22640,\n",
       " 20570,\n",
       " 22368,\n",
       " 20390,\n",
       " 20023,\n",
       " 23133,\n",
       " 22365]"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "search_sentvec(\"办理龙卡\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "qid                                                     55052\n",
       "question                                    办理龙卡随付贷业务能否累积消费积分\n",
       "answer      办理龙卡随付贷业务可以累积消费积分。使用分期付款方式同样享有消费积分，根据刷卡分期金额一次性...\n",
       "Name: 22721, dtype: object"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "content.iloc[22721]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### StarSpace\n",
    "词向量训练 https://github.com/facebookresearch/StarSpace\n",
    "此数据集由于没有tag标注，也没有相似集合分类的标签，完全的无监督数据，所以没哟采用这个方法。\n",
    "\n",
    "\n",
    "### DSSM、Siamese\n",
    "没有相似性标签\n",
    "\n",
    "\n",
    "### 直接使用无监督的分布式特征表示\n",
    "Bert encoding或者各种word2vec的表示\n",
    "\n",
    "---\n",
    "\n",
    "如果有更进一步的标注，可以采用更多的方法。这3万条数据，自己手动标注是不现实的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 倒排索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(11133, 32526)\n"
     ]
    }
   ],
   "source": [
    "word_2_id = vectorized.vocabulary_\n",
    "id_2_word = {d: w for w, d in word_2_id.items()}\n",
    "\n",
    "inverse_idx = X_array.transpose()\n",
    "print(inverse_idx.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "113547"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inverse_idx.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "from operator import and_\n",
    "from functools import reduce\n",
    "\n",
    "\n",
    "pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model')\n",
    "\n",
    "from pyltp import Postagger\n",
    "postagger = Postagger() # 初始化实例\n",
    "postagger.load_with_lexicon(pos_model_path, 'lexicon.txt')  # 加载模型\n",
    "\n",
    "and_pos_set = {'n', 'v', 'm', 'nh', 'ni', 'nl', 'ns', 'nt', 'ws'}\n",
    "\n",
    "\n",
    "def token(string):\n",
    "    return re.findall(r'[\\d|\\w]+', string)\n",
    "\n",
    "def cut(string): \n",
    "    return segmentor.segment(string)\n",
    "\n",
    "def filter_text(string):\n",
    "    q_content = token(string.lower())\n",
    "    print(q_content)\n",
    "    q_content = ' '.join(q_content)\n",
    "    q_content = cut(q_content)\n",
    "    return q_content\n",
    "\n",
    "\n",
    "# segmentor\n",
    "def search(query):\n",
    "    \"\"\"\"\"\"\n",
    "    words = filter_text(query)\n",
    "    postags = postagger.postag(words)\n",
    "\n",
    "    to_and = []\n",
    "    for i, postag in enumerate(postags):\n",
    "        if postag in and_pos_set:\n",
    "            to_and.append(words[i])\n",
    "    print(to_and)\n",
    "    \n",
    "    query_vec = vectorized.transform([' '.join(words)]).toarray()\n",
    "    try:\n",
    "        candidates_ids = [word_2_id[w] for w in to_and]\n",
    "    except KeyError:\n",
    "        pass\n",
    "\n",
    "    documents_ids = [\n",
    "         set(np.nonzero(inverse_idx[_id].toarray()[0])[0]) for _id in candidates_ids\n",
    "    ]\n",
    "\n",
    "    merged_documents = reduce(and_, documents_ids)\n",
    "    \n",
    "    sorted_docuemtns_id = sorted(merged_documents, key=lambda i: distance(query_vec, X_array[i].toarray()[0]))\n",
    "\n",
    "    return sorted_docuemtns_id"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "search(\"办理龙卡\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "content.iloc[344]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "content.iloc[22365]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def search_bm25(query):\n",
    "    \"\"\"\"\"\"\n",
    "    words = filter_text(query)\n",
    "    postags = postagger.postag(words)\n",
    "\n",
    "    to_and = []\n",
    "    for i, postag in enumerate(postags):\n",
    "        if postag in and_pos_set:\n",
    "            to_and.append(words[i])\n",
    "    print(to_and)\n",
    "    \n",
    "    query_vec = words\n",
    "    try:\n",
    "        candidates_ids = [word_2_id[w] for w in to_and]\n",
    "    except KeyError:\n",
    "        pass\n",
    "\n",
    "    documents_ids = [\n",
    "         set(np.nonzero(inverse_idx[_id].toarray()[0])[0]) for _id in candidates_ids\n",
    "    ]\n",
    "\n",
    "    merged_documents = reduce(and_, documents_ids)\n",
    "    sorted_docuemtns_id = sorted(merged_documents, key=lambda i: sent_corelation_func(query_vec, q_content[i].lower().split(), idf, avg_len), reverse=True)\n",
    "\n",
    "    return sorted_docuemtns_id"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['之前我已经通过上行短信办理信用卡还款', '我再次通过上行短信办理信用卡还款还需要输入信用卡全账号吗']\n",
      "['上行', '短信', '办理', '信用卡', '还款', '上行', '短信', '办理', '信用卡', '还款', '需要', '输入', '信用卡', '全账号']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[31469, 31470]"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "search_bm25(\"之前我已经通过上行短信办理信用卡还款，我再次通过上行短信办理信用卡还款还需要输入信用卡全账号吗？\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "content.iloc[]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['怎么办医保联名卡']\n",
      "['联名卡']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[31922,\n",
       " 31924,\n",
       " 31923,\n",
       " 31919,\n",
       " 24241,\n",
       " 24331,\n",
       " 24636,\n",
       " 520,\n",
       " 31920,\n",
       " 265,\n",
       " 61,\n",
       " 673,\n",
       " 22461,\n",
       " 20945,\n",
       " 757,\n",
       " 268,\n",
       " 31247,\n",
       " 20941,\n",
       " 20942,\n",
       " 22679,\n",
       " 20940,\n",
       " 31921,\n",
       " 392,\n",
       " 21457,\n",
       " 21461,\n",
       " 31925,\n",
       " 21460,\n",
       " 21462,\n",
       " 20944,\n",
       " 21768,\n",
       " 21458,\n",
       " 21459,\n",
       " 266,\n",
       " 30813,\n",
       " 21842,\n",
       " 20348]"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "search(\"怎么办医保联名卡\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "qid                                                     66591\n",
       "question                                           如何申请医保联名卡？\n",
       "answer      医保联名卡由我行与各地医保管理部门签署联合发行协议，由参保人到指定地点按照社会保障和我行相关...\n",
       "Name: 31924, dtype: object"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "content.iloc[31924]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 聚类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyhanlp import *\n",
    "\n",
    "ClusterAnalyzer = JClass('com.hankcs.hanlp.mining.cluster.ClusterAnalyzer')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [],
   "source": [
    "analyzer = ClusterAnalyzer()\n",
    "\n",
    "for idx, text in enumerate(q_content):\n",
    "    words = text.lower().split()\n",
    "    postags = postagger.postag(words)\n",
    "\n",
    "    to_and = []\n",
    "    for i, postag in enumerate(postags):\n",
    "        if postag in and_pos_set:\n",
    "            to_and.append(words[i])\n",
    "\n",
    "    analyzer.addDocument(idx, ', '.join(text.lower().split()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "res = list(analyzer.repeatedBisection(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {
    "collapsed": true,
    "tags": [
     "outputPrepend"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hone 手机 有 什么 要求 吗\n",
      "请问 为什么 我 在 使用 客户端 登录 手机 银行 时 有时 提示会 话 超时\n",
      "怎样 使用 客户端 修改 手机 银行 的 登录 密码\n",
      "什么 是 客户端 手机 银行\n",
      "通过 客户端 如何 开通 手机 银行 功能\n",
      "如何 知道 我 手机 的 固件 版本\n",
      "如何 将 我 的 手机 银行 解除 绑定 Android 手机\n",
      "Android 手机 能否 使用 WAP 版 手机 银行\n",
      "怎么 呢\n",
      "你 又 不 知道 了\n",
      "我 可以 变更 接收 理财 资讯 短信 服务 的 手机 号码 吗\n",
      "我 能 单独 变更 贵 金属 行情 提醒 的 而 不 变更 基金 净值 的 短信 接收 手机 吗\n",
      "嗯 好 的\n",
      "我 可以 用 多 个 手机 短信 签约 基金 短信 服务 吗\n",
      "是 怎么 着 了\n",
      "为什么 我 无法 在 网站 上 修改 我 的 主手机 号码 呢\n",
      "没 发现\n",
      "通过 网站 变更 主 手机 号码 时 可以 输入 原 副 手机 号码 吗\n",
      "又\n",
      "银行 本票 提示 付款 时间\n",
      "我 可以 通过 电话 银行 注销 账户 变动 通知 服务 吗\n",
      "我们 那个\n",
      "我 可以 通过 手机 银行 注销 账户 变动 通知 服务 吗\n",
      "我 通过 手机 银行 注销 短信通 服务 的 账户 必须 是 手机 银行 账户 么\n",
      "我 通过 手机 银行 注销 账户 变动 通知 服务 的 账户 必须 是 手机 银行 账户 么\n",
      "为什么 我 用 手机 银行 客户端 注销 短信 金融 服务 时 需要 输入 短信 验证码\n",
      "我 编辑 短信 注销 服务 怎么 系统 提示 失败\n",
      "要 勇于 创新 知道 不\n",
      "独立 注销 短信 转账 及 短信 缴费 功能 的 手机 号码 可以 副 手机 号码 吗\n",
      "我 要 知道\n",
      "独立 取消 账户 变动 通知 服务 可以 使用 副 手机 号码 注销 吗\n",
      "要 怎么 才 能 用 你\n",
      "外汇 买卖 怎么 操作\n",
      "我 注销 短信 转账 时 为什么 我 的 副 手机 号码 收 不 到 注销 提醒 短信\n",
      "怎么 操作 外汇 买卖\n",
      "我 在 手机 银行 上 开通 短信 转账 可以 去 柜台 维护 和 注销 吗\n",
      "我 的 信用卡 刚刚 消费 了 300 元 怎么 没 收到 短信\n",
      "咱俩 几 天 没 聊 了\n",
      "如何 查询 外汇 汇款 的 银行 SWIFT CODE\n",
      "你 知道\n",
      "怎么 自助 办理 结售汇\n",
      "为什么 我 设定 的 自动 转 存 没有 给 我 发送 短信 提醒\n",
      "嗯 喂\n",
      "怎么 查询 外汇 买卖 操作 时间\n",
      "银行卡 上 有 没 有 收费 的 短信 提醒 服务\n",
      "圣诞节 快乐\n",
      "祝 大家 圣诞 快乐\n",
      "祝 大家 圣诞节 快乐\n",
      "祝 你 圣诞 快乐\n",
      "您 在 网银 渠道 首 次 开通 短信 转账 或 缴费 时 网银 返 显 手机 号 是 什么 手机 号\n",
      "可以 么\n",
      "祝 你 圣诞节 快乐\n",
      "为什么 不\n",
      "为什么 不 可以 追 你 啊\n",
      "在 你 的 眼中 里 有 没 有 好人\n",
      "那 得 怎么 搞 呢\n",
      "怎么 学习 英语 比较 简单\n",
      "教教 我 怎么 学习 日语 好 不好\n",
      "能 教 我 怎么 学习 日语 吗\n",
      "我 怎么 学 日语 比较 好\n",
      "手机 支付 产品 支持 哪 几 种 模式\n",
      "手机 银行 购买 理财 产品\n",
      "我 可以 查询 通过 手机 银行 进行 的 支付 记录 吗\n",
      "我 不 能 接 电话\n",
      "开通 快捷 付 后 可以 更改 银行 账号 吗\n",
      "妈 了 个 逼 是 天秤天 平座\n",
      "手机 银行 登录 密码 锁定\n",
      "电话 银行 客户 如何 变更 15 位 身份证 号\n",
      "电子 银行 积分 兑换\n",
      "信用卡 定制 手机 银行 通知 是否 需要 绑定 所有 卡片\n",
      "注销 手机 银行 后 还 能否 继续 接收 推送 消息\n",
      "骂 人 你 都 知道 啊\n",
      "更换 绑定 手机 银行 客户端 后 旧 手机 银行 客户端 能否 接收 到 推送 消息\n",
      "用 18 位 带有 X 的 身份证 或 其它 带 字母 的 证件 号码 开通 手机 银行 输入 字符 时 需 注意 什么\n",
      "机器人 怎么 猪 一样\n",
      "你 知道 孙腾宇 吗\n",
      "你 知 不 知道 孙腾宇 啊\n",
      "电话 银行 缴费 充值 短信 验证 码 发送 的 手机 号码 规则 是 什么\n",
      "银行 本票 的 提示 付款 期限\n",
      "手机 银行 追加 新 账户 时 为什么 提示 证件 号码 不符\n",
      "网上 支付 后 能否 在 银行 打印 发票\n",
      "应该 是 不 知道 犯法\n",
      "你 吃饭 没有\n",
      "手机 银行 办理 代理 贵金属 业务 的 条件\n",
      "为什么 登录 手机 银行 客户端 提示 获取 身份 信息 失败\n",
      "银行 承兑 汇票 的 哪些 要素 不 可以 更改\n",
      "使用 手机 银行 客户端 时 出现 无法 解析 怎么办\n",
      "手机 银行 消息 可 接收 哪些 定制 消息\n",
      "小白兔 的 眼镜 为什么 是 红色 的\n",
      "白兔 的 眼镜 是 为什么 是 红色 的\n",
      "你 肚子 太 大 了\n",
      "你 多 大\n",
      "手机 银行 开通 短信 交易 类 服务 的 手机 号码 能否 修改\n",
      "中国 人民 银行 网站 是 多少\n",
      "善 融 商务 商户 一直 未 发货 怎么 催促 发货\n",
      "没有 好 位置\n",
      "E 商贸通 已经 申请 出 金 为什么 款项 没有 到账\n",
      "注销 手机 银行 账户 变动 通知 服务\n",
      "网银 中 可 增加 电话 银行 的 约定 账户 来源\n",
      "是 这样 么\n",
      "手机 银行 如何 查询 账户 贵金属 双向 交易 走势 图\n",
      "天 哪\n",
      "使用 手机 银行 消息 推送 服务 是否 需要 升 至 最新 版 客户端\n",
      "脸 怎么 又 黄 了\n",
      "电话 银行 如何 删除 账户 变动 短信 通知 签约 账户 和 手机 号\n",
      "来 着\n",
      "个人 电话 银行 非 签约 客户 是否 收取 年费\n",
      "百惠 龙卡 为什么 扣除 会员费\n",
      "三 利 国际 的 服务 电话\n",
      "手机 账号 支付 的 服务 时间\n",
      "电话 银行 如何 取消 基金 定 投\n",
      "为什么 操作员 登录 后 功能 菜单 不 全\n",
      "手机 银行 如何 查询 基金 定 投 信息\n",
      "手机 客户端 和 PC 版 的 功能 主要 有 哪些 差异\n",
      "手机 客户端 和 PC 版 的 设置 和 数据 是否 同步\n",
      "未 登录 过 PC 版 是否 可以 在 手机 客户端 进行 首 次 登录\n",
      "未成年人 能否 签约 短信 银行\n",
      "那 我 应该 怎么 办 呢\n",
      "你 如何 知道\n",
      "吉林 客户 接收 外汇 汇入 汇款 需要 向 汇款 银行 提供 哪些 信息\n",
      "跨行 转账 可以 往 哪些 银行 转账\n",
      "手机 银行 如何 设置 账户 别名\n",
      "我 的 联系 方式 变更 了 如何 通知 银行\n",
      "我 今天 在 网上 赎回 基金 以后 为什么 第二 天 查询 时 还 没有 到账\n",
      "贵州 客户 接收 外汇 汇入 汇款 需要 向 汇款 银行 提供 哪些 信息\n",
      "如何 取消 绑定 的 手机 银行\n",
      "新疆 客户 接收 外汇 汇入 汇款 需要 向 汇款 银行 提供 哪些 信息\n",
      "CSR 渠道 开通 短信通 业务 对 客户 签约 的 账号 及 手机 号 是否 存在 限制\n",
      "青海 客户 接收 外汇 汇入 汇款 需要 向 汇款 银行 提供 哪些 信息\n",
      "一个 手机 号码 可以 签约 多少 个 账户 一个 账户 可 签约 多少 个 手机\n",
      "为什么 我 在 网站 开通 短信 缴费 充值 时 提示 我 的 手机 号 无法 开通 此 功能\n",
      "我 在 不 在 没有 区别\n",
      "我 不 在 也 没有 区别\n",
      "哪些 分行 的 客户 可 用 电子 渠道 个人 网银 网站 电话 银行 手机 银行 上行 短信 方式 开通 账户 变动 通知 服务\n",
      "我 在 也 没有 区别\n",
      "定期 账户 可以 在 手机 银行 上 开通 短信 转账 汇款 和 缴费 充值 服务 吗\n",
      "怎样 通过 电话 银行 使用 账户 变动 通知 服务 功能\n",
      "没 话题 聊\n",
      "没 机会 了\n",
      "我 可以 在 手机 银行 开通 短信 短信 转账 汇款 和 短信 缴费 充值 功能 吗\n",
      "我 可以 通过 手机 上 行 短信 开通 账户 变动 通知 服务 吗\n",
      "我 在 其他 渠道 开通 了 短信 转账 汇款 和 缴费 充值 服务 可以 通过 手机 银行 渠道 维护 吗\n",
      "我 在 手机 银行 开通 短信 缴费 充值 服务 可以 选择 不同 的 扣费 账户 吗\n",
      "我 在 手机 银行 新增 约定 账户 信息 可否 调用 收款人 名册 信息\n",
      "乐当家 理财卡 是否 在 所有 的 美国 银行 自助 取款机 取款 均 免费\n",
      "我 已 开通 了 短信 转账 汇款 服务 我 在 手机 银行 上 追加 开通 短信 转账 汇款 和 约定 账户 系统 怎么 还 提示 要 验证 账户 密码 呢\n",
      "我 已经 开通 了 你 行 的 短信 金融 服务 现在 想 在 电话 银行 增加 短信 手机 号码 可以 吗\n",
      "我 想 通过 手机 上 行 短信 追加 另外 一个 手机 的 账户 变动 通知 服务 怎样 操作\n",
      "手机 到 手机 转账 的 交易 时间\n",
      "银行 存管 和 银证 转账 的 区别\n",
      "手机 银行 如何 办理 银行 转 证券 或 证券 转 银行\n",
      "我 的 账户 是 电话 银行 签约 账户 取消 电话 银行 签约 后 为什么 不 能 上 行 短信 开通 账户 变动 通知 服务\n",
      "你 不 睡觉 呀 这么 晚 了 还 在线\n",
      "鑫存管 证券 转 银行 银行 转 证券 是 什么\n",
      "我 通过 手机 银行 方式 签约 账户 变动 通知 服务 的 账户 必须 是 手机 银行 账户 吗\n",
      "我 需要 什么 条件 才 可以 在 手机 银行 开通 短信 转账 汇款 和 缴费 充值 呢\n",
      "手机 银行 客户 所在 的 分行 没有 短信 缴费 项目 是否 可以 开通\n",
      "手机 银行 普通 客户 可以 互动 开通 短信 转账 汇款 和 缴费 充值 服务 吗\n",
      "是否 可以 在 电话 银行 中 选择 短信 收费 方式\n",
      "柜台 集中 最 多 可以 开通 客户 账户 变动 通知 服务 的 手机 号码 数量\n",
      "手机 银行 年度 信用卡 账单 介绍\n",
      "理财 资讯 短信 服务 可 开通 多少 个 手机\n",
      "电话 银行 CSR 渠道 互动 短信通 服务 包括 哪些 新增 功能\n",
      "你 别 太 过分 了\n",
      "最 好 别 太 过分 了\n",
      "最 好 别 太 过分\n",
      "你 最 好 别 太 过分 了\n",
      "登录 手机 银行 的 方法\n",
      "若 我 的 网站 查询 密码 和 电话 银行 查询 密码 不 一致 该 使用 哪个 密码 来 进行 签约\n",
      "为什么 无法 接收 到 短信 动态 口令\n",
      "请问 通过 电话 银行 可以 开通 哪 几 种 账户 的 账户 变动 通知 服务\n",
      "没 见 过 你 这么 笨 的\n",
      "你 没有 搞 明白\n",
      "请问 通过 电话 银行 可以 查询 短信 业务 的 哪些 信息\n",
      "没 经历 过 高考\n",
      "手机 银行 登录 密码 输 错 几 次 被 锁定\n",
      "没 看到 啊\n",
      "没 看到 吗\n",
      "没 看到 你 啊\n",
      "没 看 懂\n",
      "没 看见 啊\n",
      "没 空 啊\n",
      "天 啊\n",
      "没 夸 你\n",
      "没 了 谢谢\n",
      "如何 删除 手机 银行 推送 消息\n",
      "没 礼貌\n",
      "广东 发展 银行 客服 电话 是 多少\n",
      "但 没 给 我 发 卡 呀\n",
      "没 礼物 哦\n",
      "腾讯 服务 电话\n",
      "没 明白\n",
      "没 明白 啊\n",
      "没 脑袋\n",
      "没 你 帮忙 可 就 麻烦 了\n",
      "修改 手机 银行 登录 密码 的 方法\n",
      "没 钱 吃饭 了\n",
      "上行 短信 全国 手机 话费 充值 的 指令 可以 小 写 输入 吗\n",
      "手机 丢失 怎么办\n",
      "如何 发短信 向 约定 手机 号码 转账\n",
      "如何 管理 手机 银行 问候语\n",
      "上行 短信 手机 话费 充值 可以 24 小时 充值 吗\n",
      "安全 使用 手机 银行 的 注意 事项\n",
      "为何 开通 手机 银行 时 提示 输入 安全码 和 有效期\n",
      "使用 手机 银行 时 提示 空闲 超时\n",
      "使用 短信 全国 手机 话费 充值 后 如果 充值 金额 没有 到账 怎么办\n",
      "手机 银行 如何 查询 已 开通 的 基金 账户\n",
      "如果 我 登记 的 手机 号码 和 别人 登记 的 手机 号码 相同 能否 查 到 我 的 信用卡 的 相关 信息\n",
      "手机 银行 如何 进行 体检 预约\n",
      "手机 银行 如何 查询 修改 信用卡 个人 资料\n",
      "为何 手机 银行 无法 使用 指纹 认证 功能\n",
      "我 一 天 可以 为 本人 手机 充 多少 钱\n",
      "刚才 叫 你 怎么 不 答应\n",
      "我 不 愿意 接收 到 你 行 95533 号码 发送 的 营销 短信 应该 怎么 操作\n",
      "我 不 是 天津 和 海南 的 手机 用户 可以 上行 短信 变更 运营商 吗\n",
      "我 之前 已 成功 进行 充值 但 后来 修改 了 相关 渠道 的 主手机 号码 还 可以 用 修改 后 的 手机 号 为 本机 充值 吗\n",
      "我 之前 已 成功 进行 充值 但 后来 关闭 了 手机 银行 网上银行 及 账户 短信 通知 服务 还 可以 继续 用 原 手机 号码 为 本机 充值 吗\n",
      "我 以前 已经 签约 了 理财卡 短信 但 现在 换 手机 号码 了 同时 还 想 再 开通 另外 一 部 手机 的 短信 服务 我 该 如何 办理\n",
      "我 只有 一个 账户 在 柜台 开通 了 网银 和 手机 银行 服务 上 行 短信 进行 本机 话费 充值 时 可以 不 输入 账户 后 四 位 不\n",
      "今天 的 天气 如何 你 知道 吗\n",
      "你 在 不 在 这里 没有 区别\n",
      "我 可以 用 任意 手机 上 行 短信 进行 设置 吗\n",
      "换卡 后 短信 银行 账户 自动 同步 的 规则\n",
      "查询 网银 绑定 手机 号码\n",
      "我 可以 编辑 短信 查询 彩信版 齐鲁 晚报 手机 报 的 定制 地址 吗\n",
      "我 可以 通过 上行 短信 为 他人 的 任何 一个 手机 号码 充值 吗\n",
      "房子 太 贵 了\n",
      "我 向 约定 的 手机 号码 转账 收款方 是 通过 哪个 账户 收款 呢\n",
      "向 手机 号 转账 到账 时间\n",
      "使用 手机 账号 支付 时 系统 为什么 提示 输入 附加码\n",
      "我 已 是 手机 银行 高级 客户 可以 上行 短信 为 本机 充值 不\n",
      "我 已 约定 了 收款方 开通 手机 银行 的 手机 号码 后来 他 变更 了 手机 银行 的 手机 号码 我 还 可以 向 原先 的 约定 手机 号码 转账 吗\n",
      "况且 还 很 小\n",
      "我 怎么 知道 各种 查询 的 指令\n",
      "我 怎样 变更 我 的 手机 号码\n",
      "我 是 你们 行 手机 银行 客户 可以 通过 短信 方式 来 查询 我 的 手机 银行 账户 的 余额 信息 吗\n",
      "我 是 你们 行 手机 银行 客户 可以 通过 短信 方式 来 查询 我 的 手机 银行 账户 的 所有子 账户 余额 信息 吗\n",
      "我 是 你们 行 手机 银行 客户 可以 通过 短信 方式 来 查询 我 的 手机 银行 账户 的 明细 信息 吗\n",
      "我 是 你们 行 手机 银行 客户 我 发 9999 查询 不 到 手机 银行 WAPPUSH 地址 请问 还 可以 通过 其他 方式 来 查询 手机 银行 WAP 地址\n",
      "我 有 三 个 手机 号 开通 了 账户 变动 短信 服务 可以 用 其中 任何 一个 手机 号码 进行 缴费 充值 不\n",
      "我 有 三 个 手机 号码 开通 了 短信 服务 可以 用 其中 任何 一个 手机 号码 进行 转账 汇款 不\n",
      "你 知道 火影忍者 吗\n",
      "更换 了 手机 后 是否 影响 龙 支付 使用\n",
      "我 每次 转账 的 时候 都 要 回复 输入 确认 码 来 确认 很 麻烦 有 没 更 简洁 的 回复 方式 来 完成 付款\n",
      "出生 年月日\n",
      "你 知道 卡巴斯基 吗\n",
      "出生 日期\n",
      "你 知道 错 了 吗\n",
      "我 的 主手机 号码 换 了 想 继续 使用 短信 缴费 充值 功能 应该 怎么 办理 呢\n",
      "你 知道 的 不少 嘛\n",
      "我 的 主手机 号码 换 了 想 继续 使用 短信 转账 汇款 功能 应该 怎么 办理 呢\n",
      "你 知道 林 俊杰 吗\n",
      "你 知道 吗 奥运 总 开支 是 多少\n",
      "我 的 手机 号码 办理 了 携号 转网 后 无法 正常 接收 95533 发送 的 短信 怎么办\n",
      "我 的 手机 号码 解除 黑名单 限制 后 可以 使用 短信 咨询 服务 吗\n",
      "你 知道 猫 扑 吗\n",
      "你 知道 魔兽 不\n",
      "手机 银行 转账 汇款 的 历史 转账 记录 能否 保留\n",
      "你 知道 你 的 年龄 吗\n",
      "你 知道 你 的 性别 吗\n",
      "通过 短信 银行 办理 全国 手机 充值 是否 有 交易 笔数 的 限制\n",
      "系统 提示 0760B3101031 您 输入 的 手机 号 错误 或 授权 码 错误 请 重新 输入 怎么办\n",
      "床单 为什么 那样 红\n",
      "你 知道 地球 是 圆 的 吗\n",
      "我 收到 银行 发 来 的 用 卡 安全 提示 短信 我 的 银行卡 资金 是否 不 安全\n",
      "你 不 能 这么 没 礼貌\n",
      "大连 客户 接收 外汇 汇入 汇款 需要 向 汇款 银行 提供 哪些 信息\n",
      "你 知道 我 是 谁 吗\n",
      "福建 客户 接收 外汇 汇入 汇款 需要 向 汇款 银行 提供 哪些 信息\n",
      "你 胆子 太 大 了\n",
      "手机 银行 手机 商盟 功能 介绍\n",
      "登录 手机 银行 并 查询 余额 时 为什么 提示 404 not found\n",
      "怎么 理解 保险 产品 的 避税 功能\n",
      "手机 银行 自行 添加 账户 的 签约 状态\n",
      "电话 银行 如何 查询 银行卡 ATM 自助 转账 功能 开通 情况\n",
      "睡觉 了 么\n",
      "退出 手机 银行 客户端 后 能否 接收 消息 通知\n",
      "登录 时 提示 已 绑定 其他 手机 设备 怎么办\n",
      "在 美国 银行 ATM 取现 是否 收费\n",
      "一个 微信号 最 多 可以 绑定 几 个 银行 客户\n",
      "在 南非 第一 国民 银行 ATM 取现 是否 收费\n",
      "西京 医院 挂号 有 没 有 时间 限制\n",
      "一个 银行 客户 最 多 可以 绑定 几 个 微信 号\n",
      "已经 好多 天 了\n",
      "为什么 在 微信 银行 对话 只 提供 当日 的 近 5 笔 明细 信息 查询\n",
      "为什么 序号 有时候 增长 到 96 就 变成 1 了 有时候 增长 到 99 才 变成 1\n",
      "为什么 我 输入 18 位 带有 X 的 身份证 或 其它 带 字母 的 证件 号码 开通 手机 银行 时 提示 验证 失败\n",
      "为什么 我 输入 序号 之后 提示 您 输入 的 序号 已 超出 小微 的 能力 范围 请 重新 点击 下方 菜单 或 输入 内容 获取\n",
      "为什么 通过 微信 银行 查询 的 网点 排队 分类 情况 与 手机 银行 不 相同\n",
      "怎么 给 我 处理 一下\n",
      "为何 我 开通 手机 银行 时 还要 输入 证件 类型 和 证件 号码\n",
      "萌萌 你 在 哪儿 呢 未来 的 一 天 我 会见 到 你 吗\n",
      "微信 银行 查询 申办 进度 是否 仅 限于 在 微信 渠道 提交 的 办卡 申请\n",
      "我 办理 的 购汇 业务 可以 通过 微信 银行 取消 吗\n",
      "我 可以 通过 微信 银行 为 他人 的 信用卡 还款 吗\n",
      "你们 有 个\n",
      "我 可以 通过 微信 银行 进行 跨 行 信用卡 还款 吗\n",
      "我 可以 通过 微信 银行 随时 申请 信用卡 账单 分期 吗\n",
      "手机 银行 在 分红日 当天 申购 的 基金 是否 按 除息 后 的 净值 成交\n",
      "你 到底 有 没 有 看见 我 说话\n",
      "我 在 微信 银行 提供 的 商户 页面 可以 用 哪些 类型 的 账户 进行 支付\n",
      "为什么 之前 反映 的 自助 设备 错账 还 未 调账\n",
      "家居 银行 年 服务费\n",
      "我 现在 无法 登录 绑定 了 银行 账户 的 微信号 现在 想 解除 银行 账户 的 绑定 怎么办\n",
      "我 的 个人 信息 有 变 是否 可以 通过 微信 银行 修改\n",
      "乐当家 理财 金卡 白金卡 Union Pay 银联 标准卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "你 知道 多少 种 语言\n",
      "乐当家 理财 金卡 白金卡 Union Pay 银联 标准卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "你 知道 个 屁\n",
      "乐当家 理财 金卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "已 有 一 笔 待 收取 的 款项 能否 同时 再 接收 其他人 通过 手机 到 手机 转账 提交 的 交易 申请\n",
      "财付通 服务 电话\n",
      "春哥 你 竟然 不 知道\n",
      "我 转 接到 小微 的 老师 后 为什么 我 点击 菜单 不 能 获得 答案 了\n",
      "我 输入 身份 证件 号 银行 账号 后 为什么 有 两 个 回复\n",
      "原来 没 那么 难\n",
      "通过 微信 银行 定位 的 网点 信息 不 准确 怎么办\n",
      "通过 微信 银行 缴费 要 收 手续费 吗\n",
      "一个 机顶盒 IC 卡 可以 申请 几 个 家居 银行 客户\n",
      "为何 在家 居 银行 申购 基金 后 不能 立刻 查询 到 相关 交易 信息\n",
      "今天 在 家居 银行 赎回 基金 以后 为什么 第二 天 查询 时 还 没有 到账\n",
      "可以 注销 家居 银行 登记 的 所有 账户 吗\n",
      "可以 通过 家居 银行 为 他人 信用卡 还款 吗\n",
      "可以 通过 家居 银行 查询 储蓄 账户 的 哪些 信息\n",
      "可以 通过 家居 银行 追加 哪些 种类 的 账户\n",
      "乐当家 理财 金卡 Union Pay 银联 标准卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "在 家居 银行 买 的 基金 可以 在 家居 银行 上 做 赎回 吗\n",
      "在 家居 银行 支付 后 可否 到 柜台 打印 发票\n",
      "在 家居 银行 注销 账户 后 该 账户 还 可以 在 柜台 正常 使用 吗\n",
      "一个 银行 账户 可 签约 多少 个 期货 资金 账户\n",
      "如何 修改 家居 银行 登录 密码\n",
      "如何 注销 家居 银行 账户\n",
      "如何 申请 成为 家居 银行 客户\n",
      "如何 通过 家居 银行 办理 账户 挂失\n",
      "如何 通过 家居 银行 查询 消费 积分\n",
      "如果 遗忘 了 家居 银行 登录 密码 该 怎么办\n",
      "你 是 一整天 都 在线 吗\n",
      "乐当家 理财 金卡 附属卡 Union Pay 银联 标准卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "乐当家 理财 金卡 MasterCard 卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "你 语言 也 太 过\n",
      "你 是 怎么 实现 的\n",
      "家居 银行 能够 办理 定期 账户 转 出 吗\n",
      "你 是 怎么 实现 和 我 对话 的\n",
      "兴业 银行 客服 电话 是 多少\n",
      "你 是 怎么 做到 和 我 对话 的\n",
      "申请 办理 家居 银行 的 储蓄 账户 种类 有 哪些\n",
      "你 怎么 反应 这么 慢 啊 快点 好 吧\n",
      "网上 可以 办理 家居 银行 注销 手续 吗\n",
      "你 怎么 还 不 走\n",
      "你 怎么 还 在线 不 困 吗\n",
      "西京 医院 分诊 电话 是 多少\n",
      "你 怎么 回复 的 这么 快 呀\n",
      "如何 开通 电话 银行 手机 进 线 绑定 功能\n",
      "你 怎么 记得 这么 多 话\n",
      "你 怎么 看到 的\n",
      "通过 家居 银行 可以 查询 哪些 账户 的 消费 积分\n",
      "你 怎么 看 同性恋\n",
      "乐当家 理财 金卡 附属卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "你 怎么 可以 出口 伤 人 呢\n",
      "乐当家 理财 金卡 附属卡 VISA 卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "你 怎么 可以 这样 呢 差劲 死 了 都\n",
      "你 怎么 老 是 抄 别人 的 啊\n",
      "同一 手机 号 签约 多 个 相同 尾号 的 账号 时 能否 使用 账户 变动 余额 提醒 上下限 设置 功能\n",
      "乐当家 理财 金卡 附属卡 MasterCard 卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "我 的 主附卡 都 签约 了 短信 银行 收到 短信 提醒 情况 是 怎样\n",
      "乐当家 理财 白金卡 附属卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "乐当家 理财 白金卡 附属卡 VISA 卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "乐当家 理财 白金卡 附属卡 MasterCard 卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "乐当家 理财 白金卡 附属卡 Union Pay 银联 标准卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "乐当家 理财 白金卡 Union Pay 银联 标准卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "上行 短信 可以 修改 其他 渠道 如 手机 银行 的 服务费 缴费 账户 吗\n",
      "乐当家 理财 白金卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "乐当家 理财 白金卡 VISA 卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "乐当家 理财 白金卡 MasterCard 卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "乐当家 理财 金卡 VISA 卡 在 美国 银行 自助 取款机 取款 享受 的 免费 服务 范围\n",
      "为什么 我 重新 签约 后 第二 天 资讯 服务 就 被 停止 了\n",
      "应该 怎么 弄\n",
      "迷路 了 怎么 把\n",
      "修改 手机 号码 后 顺延 哪些 信息\n",
      "遗忘 手机 银行 登录 密码\n",
      "手机 银行 查询 转账 记录 的 方法\n",
      "网银 手机 银行 跨行 次日 转账 到账 时间\n",
      "网银 手机 银行 跨行 实时 转账 到账 时间\n",
      "人 多 吗\n",
      "人 活 着 是 为什么\n",
      "手机 号 转账 的 到账 时间\n",
      "喂\n",
      "个人 手机 银行 登录 方式\n",
      "网上 个人 银行 有 哪些 业务\n",
      "我 的 短信 服务费 是 银行 自动 扣 收 的 可以 到 柜台 补 打 缴费 凭证 吗\n",
      "人家 怎么 教 你 粗话 啊\n",
      "我 不 太 清楚\n",
      "就 这 怎么 也 搞 不 明白\n",
      "网银 怎么 缴 公用事业费\n",
      "那 我\n",
      "非主 手机 号 可以 上行 短信 修改 短信 服务费 缴费 账户 吗\n",
      "非 移动 手机 用户 可以 查询 彩信版 齐鲁 晚报 手机 报 的 WAPPUSH 定制 地址 吗\n",
      "人生 游戏 该 怎么 玩\n",
      "你 怎么 老是 给 我 传 东西 啊\n",
      "网银 盾 客户 和 手机 银行 高级 客户 可以 上行 短信 为 他人 办理 手机 话费 充值 服务 不\n",
      "你 怎么 了\n",
      "联通 电信 手机 可以 接收 贵行 的 彩信 通知 吗\n",
      "你 怎么 了 回答 不 上 了 吧\n",
      "你 怎么 没 长头发\n",
      "你 怎么 那么 笨 啊\n",
      "请问 联通 手机 和 电信 手机 可以 接收 长短信 吗\n",
      "你 怎么 那么 气 人 啊\n",
      "你 怎么 那么 严肃\n",
      "你 怎么 能 这样 啊\n",
      "你 怎么 脾气 那么 差\n",
      "你 怎么 确定\n",
      "是 不 是 账户 设置 了 收支 通知 方向 对 追加 的 手机 号码 都 适用\n",
      "你 个 笨蛋 这 都 不 知道 啊\n",
      "转账 给 村镇 银行 的 收款行 选择 技巧\n",
      "目前 短信 转账 汇款 支持 结算 通卡 吗 手续费 怎么 算\n",
      "网银 盾 客户 可 通过 短信 向 我 的 手机 银行 签约 账户 转账 吗\n",
      "你 太 没 纪律 意识 了\n",
      "你 太 没用 了\n",
      "个人 手机 银行 更新 至 353 版本 后 为什么 不 能 选择 之前 在 用 的 证券 交易 账户 对应 的 银行 账户 购买 或 定 投 基金\n",
      "你 太 没有 人情 啦\n",
      "非 个人 手机 银行 注册 账户 购买 的 基金 产品 是否 可 通过 手机 银行 进行 赎回\n",
      "你 太 敏感 了\n",
      "你 太 能 搞 了 吧\n",
      "我 在 个人 网银 手机 银行 买 的 基金 也 可以 在 网站 查询 吗\n",
      "你 太 奇葩 了\n",
      "网银 如何 操作 银行 转 B 股 证券\n",
      "你 太 气 人 了\n",
      "你 太 谦虚 了\n",
      "你 太 强大 了\n",
      "你 太 弱智 了\n",
      "你 太 贪玩 了\n",
      "个人 手机 银行 为什么 不 能 选择 其他 账户 进行 基金 交易\n",
      "你 太 淘气 了\n",
      "已 开通 基金 服务 为什么 在 手机 银行 仍 无法 使用 基金 投资 功能\n",
      "你 太 无情 老\n",
      "你 太 献媚 了 拜\n",
      "在 个人 手机 银行 进行 基金 查询 交易 操作 有 无 时间 规定\n",
      "你 太 嚣张 了\n",
      "你 太 辛苦 了\n",
      "在 个人 手机 银行 进行 基金 交易 有 什么 费率 优惠 吗\n",
      "为什么 我 用 副 手机 号 无法 进行 转账 汇款\n",
      "目前 短信 转账 汇款 支持 结算 通卡 吗 手续费 怎么 算\n",
      "我 可以 通过 手机 银行 签约 账户 变动 通知 服务 吗\n",
      "我 是 手机 银行 移动 客户 且 是 免费 客户 可以 在 我 的 服务 中 使用 账户 变动 通知 服务 么\n",
      "你 才 没 素质\n",
      "怎样 修改 我 的 储蓄卡 开户 预留 手机 号码\n",
      "网银 怎么 购买 储蓄 国债\n",
      "你 吃饭 了 没\n",
      "Pad 银行 可以 办理 信用卡 还款 吗\n",
      "Pad 银行 能 办理 哪些 投资 理财 业务\n",
      "为什么 我 在 Pad 银行 上 看到 的 在 售 理财 产品 有时 与 网银 上 的 不 一致\n",
      "为什么 我 的 地区 与 天气 总 显示 在 北京\n",
      "你 词库 太 少\n",
      "Pad 银行 的 交易 限额 是 多少\n",
      "在 Pad 银行 中 能否 隐藏 账号\n",
      "哪些 客户 可以 使用 Pad 银行\n",
      "Pad 银行 客户端 上 手机 银行 登录 时 的 设备 绑定 验证 和 手机 端 上 的 设备 绑定 有 冲突 吗\n",
      "Pad 银行 上 连续 输 错 三 次 登录 密码 怎么办\n",
      "你 错 的 太 多 了\n",
      "网上银行 登录 与 手机 银行 登录 有 什么 区别\n",
      "你 错 的 也 太 多 了 吧\n",
      "Pad 银行 转账 手续费 如何 收取\n",
      "你 还 在线 么\n",
      "网上 支付 怎么 选择 付款 账户\n",
      "如何 为 我 的 预付费 手机 固话 进行 充值\n",
      "你 还 知道 黄瓜\n",
      "我 可以 根据 手机 月 信用卡 账单 进行 缴费 吗\n",
      "你 还 知道 哪些 啊\n",
      "为什么 要 做 银医 服务 签约\n",
      "你 知道 一个 人 有 多少 染色体 吗\n",
      "还 得\n",
      "跟 你 聊天 怎么 更 寂寞 了\n",
      "好 用\n",
      "怎么 查询 查询 电子 银行 账户 签约 状态\n",
      "你 太 聪明 了\n",
      "怎么 开通 自助 设备 转账 功能\n",
      "你 怎么 在 这儿 休息\n",
      "现金 类 自助 设备 怎么 转账\n",
      "怎么 办理 自助缴费\n",
      "生日 要 怎么 过\n",
      "张江 到 虹桥 怎么 走\n",
      "怎么 那个\n",
      "你 知道 世界 水城 吗\n",
      "你 知道 HAL 么\n",
      "青春 太 短暂 了\n",
      "你 知道 HAL 么\n",
      "青春 怎么 思考\n",
      "电话 银行 查询 到期 还款日 的 路径\n",
      "如何 变更 手机 号码\n",
      "如何 通过 手机 银行 办理 基金 交易 业务\n",
      "手机 银行 查询 到期 还款日 的 路径\n",
      "手机 银行 如何 查询 黄金 定 投 协议\n",
      "手机 银行 如何 查询 手机 缴费 记录\n",
      "手机 银行 如何 新增 黄金 定 投 计划\n",
      "生活 太 难 了\n",
      "网银 手机 银行 个人 结售汇 功能 目前 支持 的 币种\n",
      "网银 手机 银行 充值 手机 话费 是否 可以 撤销\n",
      "网银 手机 银行 登录 记录 查询\n",
      "网银 手机 银行 跨行 次日 转账 到账 时间\n",
      "网银 手机 银行 跨 行 普通 转账 到账 时间\n",
      "网银 手机 银行 跨行 实时 转账 到账 时间\n",
      "网银 手机 银行 转账 记录 查询\n",
      "网银 或 手机 银行 转账 长 时间 未 到账 怎么 处理\n",
      "为什么 POS 机 不 能 刷卡\n",
      "电话 银行 查询 贷款 信息\n",
      "电话 银行 查询 当日 交易 明细 的 路径\n",
      "电话 银行 查询 积分 有效期 的 路径\n",
      "电话 银行 查询 密码 的 设置 方法\n",
      "电话 银行 贷款 的 查询 方法\n",
      "电话 银行 公积金 账户 的 查询 方法\n",
      "电话 银行 关闭 小 额 免密 免签\n",
      "手机 银行 如何 查询 信用卡 账务 信息\n",
      "电话 银行 介绍\n",
      "电话 银行 如何 办理 存折 的 正式 挂失\n",
      "电话 银行 如何 办理 借记卡 的 正式 挂失\n",
      "电话 银行 如何 操作 定期 转 活期\n",
      "那 就 这样 吧\n",
      "电话 银行 如何 操作 通知 存款 转活期\n",
      "手机 银行 如何 操作 流量 充值\n",
      "手机 银行 如何 操作 游戏 充值 业务\n",
      "查询 接收 动账 类 短信 的 手机 号\n",
      "如何 查询 短信 动态 密码 手机 号码\n",
      "手机 银行 如何 操作 手机 充值\n",
      "怎样 通过 电话 银行 查询 账户 交易 明细\n",
      "如何 通过 手机 银行 办理 约定 账户 设置\n",
      "电话 银行 收费 吗\n",
      "手机 银行 如何 办理 信用卡 申请\n",
      "你 知道 这 附近 有 哪些 好玩 的 吗\n",
      "如何 通过 电话 银行 办理 基金 交易 业务\n",
      "如何 通过 电话 银行 操作 第三 方 存管 转账\n",
      "电话 银行 转账 手续费 如何 收取\n",
      "是 首选 账号 为什么 在 绑定 时 让 我 选择 首选 账号\n",
      "手机 银行 关闭 小 额 免密 免签\n",
      "我 无法 通过 专用 借记卡 支付 人工费 怎么 处理\n",
      "你 知道 暗恋 的 感觉 是 怎样 的 吗\n",
      "开通 使用 手机 银行 服务 怎么 收费\n",
      "开通 使用 手机 银行 收费 标准\n",
      "我 应该 怎么 去 表白\n",
      "开通 使用 手机 银行 的 费用\n",
      "电话 银行 密码 忘 了 怎么办\n",
      "如何 查看 手机 银行 保险 产品 的 投保 区域\n",
      "通过 个人 手机 银行 办理 一 笔 基金 交易 在 未成交 前 如何 进行 撤销\n",
      "你 能否 教 我 该 怎么 表白\n",
      "手机 银行 怎么 缴纳 保险费\n",
      "或者\n",
      "手机 银行 查询 子帐户 的 明细\n",
      "手机 银行 定期 转 活期 的 介绍\n",
      "手机 银行 如何 操作 资金 归集\n",
      "手机 银行 如何 查询 持有 基金\n",
      "手机 银行 如何 查看 理财 产品 说明书\n",
      "手机 银行 如何 查询 持有 理财 产品\n",
      "信用卡 具备 缴纳 手机 费 电话费 水费 电费 有线电视费 等 费用 的 功能 吗\n",
      "手机 银行 理财 产品 线 上 预约 功能 介绍\n",
      "手机 银行 哪个 菜单 可以 办理 大额 存单 业务\n",
      "手机 银行 哪里 可以 查询 个人 住房 贷款 的 利率\n",
      "你 知道 怎么 使用 手机 吗\n",
      "手机 银行 如何 操作 银行 转 证券\n",
      "知道 使用 手机 的 方法 吗\n",
      "手机 银行 如何 操作 银证 转账\n",
      "既然\n",
      "是 吗 我 从小 就 没有 朋友 没 人 理解 我 没 人 陪 我 玩\n",
      "手机 银行 如何 操作 证券 转 银行\n",
      "是 吗 你 没 伤心\n",
      "手机 银行 如何 操作 记账式 国债 实时 交易\n",
      "如何 通过 手机 银行 开卡\n",
      "手机 银行 如何 查看 黄金 行情\n",
      "手机 银行 登录 密码 重置 渠道\n",
      "如何 修改 或 重置 信用卡 电话 银行 密码\n",
      "短信 银行 怎么 查询 交易 明细\n",
      "是 你 太 挑 了 吧\n",
      "电话 银行 转账 的 介绍\n",
      "如何 通过 电话 银行 办理 缴费 业务\n",
      "手机 银行 如何 操作 结售汇\n",
      "短信 银行 怎么 操作 手机 充值\n",
      "手机 银行 贷款 的 功能 介绍\n",
      "如何 才 能 通过 手机 银行 查询 工资 单\n",
      "手机 银行 办理 基金 定投 的 方法\n",
      "手机 银行 购汇 结汇\n",
      "手机 银行 办理 外汇 买卖 交易 的 方法\n",
      "很多 银行 都 有 发行 芯片 卡 你们 是否 也 有 芯片 信用卡\n",
      "手机 银行 办理 账户 贵金属 交易 的 方法\n",
      "手机 银行 黄金 的 购买 方法\n",
      "手机 银行 记账式 贵金属 交易 功能\n",
      "手机 银行 查询 贷款 信息\n",
      "手机 银行 贷款 的 查询 方法\n",
      "手机 银行 贷款 进度 在 哪里 查询\n",
      "手机 银行 公积金 的 查询 方法\n",
      "手机 银行 查询 养老金 信息 的 方法\n",
      "违约金 是 怎么 计算 的\n",
      "手机 银行 查询 账户 贵金属 交易 记录 的 方法\n",
      "手机 银行 撤销 理财 产品 挂单 的 方法\n",
      "手机 银行 存入 定期 存款 的 操作 方法\n",
      "手机 银行 操作 定期 存款 的 操作 方法\n",
      "手机 银行 登录 密码 被 锁 或 遗忘 怎么办\n",
      "手机 银行 登录 密码 怎么 设置\n",
      "手机 银行 登陆 密码 设置 规则\n",
      "手机 银行 登录 密码\n",
      "手机 银行 登录 密码 的 格式 有 何 要求\n",
      "手机 银行 购买 理财 产品 的 方法\n",
      "手机 银行 个人 住房 贷款 还款 信息 查询\n",
      "手机 银行 如何 办理 违章 罚款\n",
      "入住 酒店 时 酒店 为什么 要 先 刷 一 笔 预授权\n",
      "如何 通过 手机 银行 办理 缴费 业务\n",
      "手机 银行 生活 缴费 功能\n",
      "手机 银行 如何 操作 生活 缴费\n",
      "手机 银行 如何 查询 党费 交纳 记录\n",
      "如何 通过 手机 银行 操作 第三 方 存管 转账\n",
      "手机 银行 变更 分红 方式 介绍\n",
      "手机 银行 交易 提醒 设置 介绍\n",
      "手机 银行 登录 密码 修改 渠道\n",
      "好 困 哦 还 没 睡醒\n",
      "手机 银行 网上银行 用户 名 是 相同 的 吗\n",
      "手机 银行 和 网上银行 转账 汇款 手续费 优惠\n",
      "手机 银行 如何 查询 养老金 支取 记录\n",
      "你 的 舌苔 太 黄 了\n",
      "手机 银行 如何 查询 券商 集合 理财 购买 记录\n",
      "手机 银行 如何 查询 外币 理财 产品\n",
      "手机 银行 如何 查询 鑫存管 转账 明细\n",
      "手机 银行 如何 查询 游戏 充值 订单\n",
      "手机 银行 如何 查询 理财 产品\n",
      "你 的 生日 是 哪 天 呢 亲\n",
      "手机 银行 如何 查询 最新 存贷款 利率\n",
      "手机 银行 如何 撤销 黄金 定投 交易\n",
      "手机 银行 如何 撤销 基金 定 投 协议\n",
      "手机 银行 如何 撤销 券商 集合 理财 购买 交易\n",
      "手机 银行 如何 打印 转账 回执\n",
      "手机 银行 如何 购买 保险 产品\n",
      "手机 银行 如何 购买 贵金属 投资 产品\n",
      "手机 银行 如何 购买 券商 集合 理财\n",
      "手机 银行 如何 购买 预留 额度 理财 产品\n",
      "手机 银行 如何 交 党费\n",
      "手机 银行 如何 缴 保费\n",
      "手机 银行 如何 缴 保费\n",
      "信用卡 网站 登录 用户 名 忘记 怎么 取回\n",
      "手机 银行 如何 缴 保险费\n",
      "手机 银行 如何 缴 党费\n",
      "手机 银行 如何 开通 贵金属 交易\n",
      "手机 银行 如何 开通 黄金 交易\n",
      "手机 银行 如何 开通 黄金 业务\n",
      "手机 银行 如何 查询 信用卡 可用 额度 等 信息\n",
      "手机 银行 如何 开通 基金 定 投 协议\n",
      "手机 银行 如何 查询 信用卡 申办 进度\n",
      "手机 银行 如何 开通 资金 归集\n",
      "手机 银行 如何 追加 信用卡\n",
      "没有 急事 吗\n",
      "手机 银行 如何 签约 账户 贵金属 双向 交易\n",
      "如何 通过 手机 银行 办理 信用卡 购汇 还款\n",
      "如何 成为 手机 银行 客户\n",
      "手机 银行 如何 取消 无卡 取款 预约\n",
      "手机 银行 如何 删除 银行卡\n",
      "手机 银行 如何 删除 最近 收款人\n",
      "手机 银行 如何 查看 开户 信息\n",
      "我 的 手机 号 变更 了 怎么 办理 短信 业务\n",
      "手机 银行 如何 申请 借记卡\n",
      "怎么 设置\n",
      "手机 银行 如何 使用 话费 优惠券 进行 手机 充值\n",
      "手机 银行 如何 投保\n",
      "手机 银行 如何 维护 常用 收款人 信息\n",
      "手机 银行 贵金属 业务\n",
      "手机 银 可 绑定 多 台 设备 吗\n",
      "手机 银行 如何 修改 黄金 定 投 计划\n",
      "手机 银行 如何 新增 修改 基金 定 投 协议\n",
      "手机 银行 如何 修改 卡别名\n",
      "手机 银行 如何 再 购买 持有 基金\n",
      "才 能\n",
      "手机 银行 如何 诊断 基金\n",
      "我们 这个\n",
      "手机 银行 如何 转账\n",
      "手机 银行 上 如何 登录\n",
      "手机 银行 手机 银行 登录 密码\n",
      "手机 银行 收款人 登记簿\n",
      "手机 银行 收款人 登记簿 是否 和 个人 网银 收款人 同步\n",
      "手机 银行 同时 遗忘 用户名 及 登录 密码 如何 处理\n",
      "那 这样 的\n",
      "手机 银行 我 的 贷款\n",
      "手机 银行 我 的 金融 功能 介绍\n",
      "手机 银行 我 的 账户 查询\n",
      "手机 银行 下 挂 信用卡 功能 的 办理 渠道\n",
      "手机 银行 修改 手机 银行 登录 密码\n",
      "手机 银行 修改 信用卡 账单 寄 送 方式\n",
      "手机 银行 一个 客户端 可以 登录 几 个 账户\n",
      "手机 银行 已 购买 可 查 哪 种 保险\n",
      "手机 银行 银证 转账 的 介绍\n",
      "你 的 逻辑 不 太 对\n",
      "手机 银行 银证 转账 明细 查询 时限\n",
      "手机 银行 有 什么 功能\n",
      "手机 银行 怎么 用 积分 兑换 商品\n",
      "手机 银行 怎么 用 信用卡 积分 兑换 商品\n",
      "手机 银行 账户 查询 的 介绍\n",
      "你 这么 厉害 你 知道 吗\n",
      "手机 银行 整存 整取 的 办理 方法\n",
      "手机 银行 支持 指纹 功能 吗\n",
      "手机 银行 中 如何 操作 银期 转账\n",
      "你 没 大 没 小\n",
      "手机 银行 中 如何 查询 和 操作 理财\n",
      "你 没 教养 阿\n",
      "手机 银行 中 如何 设置 手机 号 转账 收款卡 号\n",
      "你 没 妈\n",
      "手机 银行 重置 手机 银行 登录 密码\n",
      "我 我 我 我 我 要\n",
      "手机 银行 转账\n",
      "怎么 修\n",
      "手机 银行 转账 记录 查询\n",
      "手机 银行 转账 记录 查询 可 查询 哪些 转账 交易\n",
      "手机 银行 转账 失败\n",
      "还 好 你 在\n",
      "通过 手机 银行 购买 理财\n",
      "您 看 怎么 解决 一下\n",
      "手机 银行 登录 密码 设置 规则\n",
      "我 登录 手机 银行 提示 我 要 做 网银 归并\n",
      "我 已 做 过 风险 测评 为什么 仍然 无法 通过 手机 银行 购买 理财 产品\n",
      "遗忘 手机 银行 登录 密码 怎么办\n",
      "怎样 登录 手机 银行\n",
      "还 哭 没 出息\n",
      "怎样 使用 手机 银行 跨行 账户 查询 功能\n",
      "怎样 通过 手机 银行 查询 账户 余额 交易 明细\n",
      "怎样 在 手机 银行 申请 贷款\n",
      "安全 使用 手机 银行 应 注意 哪些 方面\n",
      "目前 是否 支持 按 手机 号码 注销 账户 变动 通知 服务\n",
      "我 开通 了 你们 行 的 短信 金融 服务 但 账户 发生 变动 后 怎么 没 收到 短信\n",
      "祝 你 愚人节 快乐\n",
      "祝 大家 愚人节 快乐\n",
      "没有 USBKEY 或 USBKEY 不 在 身边 如何 转账\n",
      "愚人节 是 哪 天\n",
      "你 知道 愚人节 是 哪 一 天 吗\n",
      "你 知道 愚人节 是 哪 天 吗\n",
      "我 可以 变更 理财 资讯 短信 服务 的 接收 手机 吗\n",
      "我 已经 通过 其他 渠道 签约 账户 变动 通知 服务 的 客户 并 绑定 了 一 主 一 副 手机 登录 网站 定制 理财 资讯 短信 服务 时 我 2 个 手机 号码 都 能 接收 到 验证码 吗\n",
      "断 了 你 的 电\n",
      "你 太 可爱 了\n",
      "你 太 客气 了\n",
      "你 太 恐怖 了\n",
      "你 太 累 了\n",
      "你 太 厉害 了\n",
      "你 太 另 我 失望 了\n",
      "你 太 流氓 了\n",
      "你 太 没 安全感 了\n",
      "看见 没\n",
      "我 可以 通过 微信 银行 进行 购汇 还款 吗\n",
      "我 已经 通过 微信 银行 办理 激活 了 信用卡 如何 通过 微信 银行 设置 密码\n",
      "我 的 微信号 绑定 了 银行 账户 现在 微信号 被 盗号 了 怎么办\n",
      "不 知道 他 干 嘛 的\n",
      "全国 话费 充值 与 手机 话费 有 何 区别\n",
      "Pad 银行 支持 哪些 设备\n",
      "没有 网银 和 手机 银行 能 使用 Pad 银行 吗\n",
      "当然 你 妹 我 怎 不 知道\n",
      "废话 我 也 知道\n",
      "信用卡 为 主卡 的 网银 手机 银行 账户 下 挂 卡号 添加 限制\n",
      "手续费 怎么 计算 如何 收取\n",
      "快乐\n",
      "如何 安全 使用 手机 银行\n",
      "银行 ATM 机 卡卡 转账 还款 的 还款卡 限制\n",
      "银行 ATM 机 卡卡 转账 还款 后 额度 恢复 时效\n",
      "分期 手续费 怎么 收取\n",
      "购车 分期 手续费 怎么 计算 如何 收取\n",
      "没有\n",
      "没 走\n",
      "短信 银行 功能 介绍\n",
      "手机 银行 预约 取款\n",
      "那儿\n",
      "那里\n",
      "手机 银行 购买 基金 操作 步骤\n",
      "微信 银行 查 账户 余额\n",
      "解绑 微信 银行 账户 绑定\n",
      "柜面 修改 手机 号码 的 指引\n",
      "手机 银行 优势\n",
      "那 你 来 吧\n",
      "为什么 我 要 思考 得 好 啊\n",
      "为什么 要 我 思考 得 好 啊\n",
      "你 怎么 半天 才 回 我 啊\n",
      "怎么 半天 才 回 我 啊\n",
      "手机 号码 的 修改 渠道\n",
      "看到 没\n",
      "信用卡卡 BIN 号 的 格式\n",
      "没 看到 闸机\n",
      "你们 这个 银行 怎么 没 人 啊\n",
      "都 没 人 陪 我 聊天\n",
      "寂寞 但 没 人 可以 聊天\n",
      "我 怎么 进去 呢\n",
      "操作 银行 自助 还款 的 渠道\n",
      "银行 ATM 机 卡卡 转账 还款 成功 的 通知 方式\n",
      "银行 ATM 机 卡卡 转账 还款 的 到账 时效\n",
      "银行 ATM 机 卡卡 转账 还款 的 限制\n",
      "银行 自动 还款 的 币种 限制\n",
      "银行 自动 还款 的 到账 时效\n",
      "银行 自动 还款 的 还款 次数 限制\n",
      "银行 自动 还款 的 还款卡 限制\n",
      "为什么 我 不能 闪 你\n",
      "银行 自动 还款 的 扣款 方式\n",
      "为什么 我 的 群 没有 上线\n",
      "银行 自动 还款 的 扣款 规则\n",
      "银行 自动 还款 的 扣款 时间\n",
      "银行 自动 还款 的 扣款 顺序\n",
      "手机 银行 转账 还款 到账 时间\n",
      "手机 银行 风险 评估\n",
      "银行 自动 还款 的 签约 卡种 限制\n",
      "银行 自动 还款 的 签约 渠道\n",
      "银行 自动 还款 的 签约 账户 数量\n",
      "银行 自动 还款 的 修改 渠道\n",
      "银行 自动 还款 的 修改 生效 时间\n",
      "银行 自动 还款 关闭 后 的 生效 时间\n",
      "银行 自动 还款 介绍\n",
      "银行 自动 还款 签约 后 的 生效 时间\n",
      "你 看 吧\n",
      "银行 自助 还款 成功 的 通知 方式\n",
      "银行 自助 还款 的 到账 时效\n",
      "银行 自助 还款 的 还款卡 限制\n",
      "银行 自助 还款 的 签约 渠道\n",
      "银行 自助 还款 的 限制\n",
      "银行 自助 还款 的 修改 渠道\n",
      "银行 自助 还款 的 修改 生效 时间\n",
      "银行 自助 还款 关闭 后 的 生效 时间\n",
      "怎么 学习 日语 比较 简单\n",
      "教教 我 怎么 学习 韩语 好 不好\n",
      "银行 自助 还款 后 额度 恢复 时效\n",
      "银行 自助 还款 签约 后 的 生效 时间\n",
      "手机 银行 纸 黄金 功能 咨询\n",
      "手机 银行 购买 投资品\n",
      "手机 银行 密码 修改\n",
      "手机 银行 购买 保险 操作 步骤\n",
      "这 怎么 叫 扯淡 呢\n",
      "电子 银行 积分 兑换\n",
      "你 知道 程序员 吗\n",
      "无论\n",
      "我 的 那个\n",
      "我 不 知道\n",
      "那个\n",
      "何 通过 手机 银行 办理 信用卡 购汇 还款\n",
      "何 通过 手机 银行 办理 信用卡 还款\n",
      "何 通过 手机 银行 获取 笔笔 交易 提醒\n",
      "机 银行 如何 查询 信用卡 可用 额度 等 信息\n",
      "你 太 过分 了\n",
      "你 太 过份 了 把\n",
      "你 太 坏 了\n",
      "跟 你 说话 太 没 意思 了\n",
      "跟 你 说话 一点 意思 都 没有 你 太 笨 了\n",
      "如何 办理 银行 卡销户\n",
      "手机 银行 如何 设置 预留 信息\n",
      "手机 银行 外汇 转账 限额\n",
      "怎么 查询 理财 产品 持有 情况\n",
      "跟 你 一样\n",
      "好 小 哦\n",
      "今年 愚人节 是 哪 一 天\n",
      "不 知道\n",
      "不 知道\n",
      "不 知道 心情 不好 啊\n",
      "牢骚 太 盛防 肠断\n",
      "其中\n",
      "你 怎么 这么 人性\n",
      "挂失 补卡 后 手机 银行 是否 需要 重新 签约\n",
      "恩好 知道 就 好\n",
      "你 太 讨厌 了\n",
      "父亲节\n",
      "腹空 如 也\n",
      "借记卡 修改 快捷 支付 手机 号\n",
      "你 的 头 为什么 这么 圆\n",
      "没有 激活 的 借记卡 可以 使用 吗\n",
      "批量 办卡 用户 如何 通过 手机 银行 补录 信息\n",
      "就 知道 整天 黏 着 我\n",
      "手机 遗失 对 借记卡 使用 的 影响\n",
      "同表 申请 的 借记卡 能否 通过 电话 银行 激活\n",
      "电话 通讯 有点 异常\n",
      "你 的 电话 通讯 异常 吗\n",
      "医保卡 密码 怎么 修改\n",
      "咦 你 怎么 知道\n",
      "怎么 跟 娘儿 们 一样\n",
      "怎么 过 圣诞\n",
      "怎么 还 没 睡\n",
      "怎么 和 你 聊 这么 无聊\n",
      "好 的 也 祝 你 愉快\n",
      "怎么 几 天 没 见 着 你 呢\n",
      "怎么 教\n",
      "怎么 教 啊\n",
      "怎么 教 呢\n",
      "怎么 教 你 呢\n",
      "怎么 解决 婆媳 关系\n",
      "好 的 呀\n",
      "怎么 借 书\n",
      "怎么 就 知道 道歉 啊\n",
      "怎么 拉\n",
      "怎么 啦 真 忙 啊\n",
      "怎么 老 是 断 线\n",
      "怎么 了\n",
      "怎么 乱 来 的\n",
      "怎么 骂 人 呢\n",
      "怎么 没 电 了\n",
      "怎么 没 动静 了\n",
      "有 没 有\n",
      "睡觉\n",
      "怎么 确认 贷款 是否 扣 款\n",
      "怎么 也 是 反应 慢\n",
      "你 怎么 那么 透彻\n",
      "你 怎么 这么 笨\n",
      "然后 这个\n",
      "好 的 我 知道 了 谢谢 你\n",
      "你 没有 性别 吗\n",
      "我 和 网络 怎么 不 通 呢\n",
      "你们 的 机器人 消耗 我 手机 流量 吗\n",
      "我 没有 那个 只有 qq\n",
      "你们 太 不 专业 太 过分 了\n",
      "连接 在线 专家\n",
      "连 这 都 不 知道\n",
      "我 要 睡觉 了\n",
      "你 知道 最近 有 哪些 新 出 的 电影 吗\n",
      "脸 怎么 红 了\n",
      "你 知道 这 位 是 谁 吗\n",
      "你 知道 这 是 哪 位 吗\n",
      "你 知道 这 是 谁 吗\n",
      "你 知道 这 是 哪 一 位 吗\n",
      "书 可以 没有 标题 名字 么\n",
      "彼此\n",
      "别 看\n",
      "知道 特快专递 是 多少 钱 吗\n",
      "能否 借用 一下 你 的 电话\n",
      "能 不 能 借 你 电话 一 用\n",
      "可 不 可以 借用 下 你 的 电话\n",
      "还 没 吃饭\n",
      "还 没 吃饭 呢\n",
      "还 没 睡 够\n",
      "还 没 走 啊\n",
      "还是 不 太 聪明 啊\n",
      "你 咋 这么 没有 追求\n",
      "那 你 怎么 能 叫 机器人\n",
      "那 你 知道 谁 最 帅么\n",
      "挂失 补卡 后 电话 银行 是否 需要 重新 签约\n",
      "也 是\n",
      "给 个 回应 好 吗\n"
     ]
    }
   ],
   "source": [
    "for i in res[0]:\n",
    "    print(q_content[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过聚类来分离不同的intent的数据，误差不可避免，并且难以评测实际的效果，不建议使用。因为作为下游任务输入，产生了未知的固有偏差。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "只使用聚类来缩小搜索范围"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:17:19.173170Z",
     "start_time": "2020-06-18T03:17:18.991245Z"
    }
   },
   "outputs": [],
   "source": [
    "import io\n",
    "\n",
    "def load_vectors(fname):\n",
    "    fin = io.open(fname, 'r', encoding='utf-8', newline='\\n', errors='ignore')\n",
    "    n, d = map(int, fin.readline().split())\n",
    "    data = {}\n",
    "    for line in fin:\n",
    "        tokens = line.rstrip().split('\\t')\n",
    "        data[tokens[0]] = np.array(list(map(float, tokens[1].split())))\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:18:03.051560Z",
     "start_time": "2020-06-18T03:18:01.299554Z"
    },
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "selected = load_vectors('selected_words_fasttext_300.txt')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:18:40.061065Z",
     "start_time": "2020-06-18T03:18:39.855069Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.65208613e+00,  1.18255034e+00,  4.24145704e+00, -1.59712788e+00,\n",
       "        8.60255272e-01,  3.01796617e+00, -1.37390461e+00, -7.18926022e-01,\n",
       "       -7.14630671e-01,  3.52789671e-01, -2.04633439e-01, -5.74183184e-01,\n",
       "        1.19527118e+00,  2.80558763e+00, -8.11127023e-01,  3.28578360e-01,\n",
       "       -2.57038264e+00,  1.33348900e+00, -2.15569896e+00,  1.00758357e+00,\n",
       "       -4.23534664e+00, -9.87053533e-01, -9.37054116e-01, -8.58435405e-01,\n",
       "        6.35899910e-01, -3.09533095e+00,  1.12948356e+00,  4.09486714e-01,\n",
       "       -1.73818548e+00,  8.27988133e-01,  4.58147857e-01, -7.87355935e-01,\n",
       "       -1.25655238e+00,  1.58097459e+00, -2.10624873e+00, -1.15538069e+00,\n",
       "        3.72786165e+00, -2.61324533e+00, -1.06625954e+00,  1.02676801e+00,\n",
       "       -3.02137220e-01, -9.77209518e-01,  5.35068637e-01,  1.96771122e+00,\n",
       "        1.47119064e+00, -8.84401688e-01,  2.26167245e+00, -2.15688232e-01,\n",
       "        6.03710012e-01, -2.62562389e-01, -1.58422013e-01,  6.26440330e-01,\n",
       "        1.24142646e+00,  1.73429778e+00,  2.51365404e-01,  2.26034744e+00,\n",
       "        2.48345036e+00, -3.85825741e+00,  1.90541400e+00, -9.87965898e-01,\n",
       "       -1.10774512e+00, -2.41818257e-01,  8.54941702e-01,  1.24108464e+00,\n",
       "        1.13574490e+00, -3.22260622e+00,  1.61821020e+00, -1.89361906e+00,\n",
       "        5.25271429e-01, -1.52598766e+00, -3.17341723e-01,  2.38389381e+00,\n",
       "        3.34748281e-01, -8.87951741e-01, -1.07030795e+00,  6.22102649e-01,\n",
       "       -2.16677995e+00,  4.40500925e-01,  1.21999198e+00,  4.13567905e-02,\n",
       "        2.32291628e+00,  4.20615284e-01,  8.00882716e-02, -2.21706547e+00,\n",
       "       -1.19227392e+00,  3.94086163e-02,  6.39858426e-01,  1.81484432e+00,\n",
       "       -8.08948505e-02,  1.37595054e+00,  1.28447357e+00, -2.47609965e-01,\n",
       "       -1.81796944e-01, -5.26357759e-01, -3.00784322e+00, -5.86623074e-02,\n",
       "       -1.40957327e+00, -7.68835278e-01, -7.95512428e-01, -1.69707140e+00,\n",
       "       -1.23282231e+00,  7.07431838e-01,  1.24391988e-01,  1.93592173e+00,\n",
       "        2.12740267e+00, -9.97857637e-02,  7.35731783e-01,  4.57756726e-01,\n",
       "       -1.05589022e+00, -9.95990487e-01,  3.64856193e-01, -6.12018339e-02,\n",
       "        1.89982142e-01,  1.13454864e-01, -3.17636991e-01,  4.43873396e-01,\n",
       "        2.88397721e-02,  1.75498680e+00, -1.22955896e+00,  1.37219400e+00,\n",
       "       -1.15138175e+00, -1.37996776e+00, -6.29101416e-01, -2.25162671e+00,\n",
       "       -4.49812638e-01,  9.42936693e-01, -2.28777044e+00, -3.40025351e-01,\n",
       "        1.62546742e+00, -3.21875918e-01, -3.58637505e+00, -2.25855271e+00,\n",
       "        4.30313241e-02,  5.38430425e-01,  1.47637390e-02,  1.68799642e+00,\n",
       "        7.02773127e-01, -1.16833802e+00,  4.13723948e-01, -1.29183887e+00,\n",
       "        5.53377968e-01,  7.67141275e-01, -2.66612790e+00,  3.96865455e+00,\n",
       "       -1.51436499e-02,  1.65169672e+00, -5.05173302e-01, -5.02285940e-01,\n",
       "       -9.51070966e-01, -2.92198425e-01, -1.88985427e+00, -2.16491210e+00,\n",
       "        1.26107687e+00,  2.54907192e-02,  1.79285468e+00,  1.51382633e+00,\n",
       "        1.91493370e+00, -6.60331949e-01,  2.58792637e-01,  1.87174656e+00,\n",
       "       -9.96870076e-01, -6.21802858e-01, -4.69221643e-01,  1.33222917e+00,\n",
       "       -2.29980000e+00, -2.80635524e+00,  3.15891837e-03,  2.37111581e-01,\n",
       "       -8.47953226e-01,  6.81215072e-01,  2.87256278e+00,  1.15915078e-02,\n",
       "        6.88849495e-02, -1.33914927e+00,  1.36012326e+00, -6.43211980e-01,\n",
       "        1.20172868e+00, -3.22971020e-01, -1.45801144e+00,  1.03518333e+00,\n",
       "        3.62731916e-01,  7.30592091e-01,  6.33739564e-01,  2.52294428e+00,\n",
       "        8.99001897e-01,  4.06635192e-02, -1.00437577e+00,  1.08520085e+00,\n",
       "        1.53385174e-01,  2.40725321e+00, -6.41222001e-01,  2.86006280e-01,\n",
       "       -1.06188810e+00,  1.01092524e-01,  1.72699226e+00,  1.64265273e-01,\n",
       "        1.39981570e+00, -4.22701135e-01, -1.71396039e+00,  3.80245701e-01,\n",
       "        7.52948186e-01, -3.72408832e-01,  6.51477101e-03, -3.85219926e-01,\n",
       "       -7.53110993e-01,  4.98256271e-01, -1.61928303e+00,  3.00807769e-01,\n",
       "       -1.09100772e+00, -8.20544175e-01, -8.40825575e-02,  4.02272513e-02,\n",
       "       -1.37856532e+00, -1.65664052e+00,  2.64102851e-01, -1.39188644e+00,\n",
       "        4.49146332e-01,  2.21176620e-02, -1.01215199e+00, -3.24842052e+00,\n",
       "        1.42625285e+00, -1.26275440e+00, -2.63125400e+00, -3.54799019e-01,\n",
       "        3.91421422e+00, -4.20860630e-02,  1.25935323e+00, -3.60493467e-01,\n",
       "       -1.72867331e+00, -3.70484378e+00,  8.12961383e-02,  1.00187016e+01,\n",
       "        1.98602880e-02,  7.55826761e-01, -1.93198986e-01,  3.85513880e-01,\n",
       "        3.19709563e-01, -5.77613892e-01,  1.72739869e+00, -1.06960783e+00,\n",
       "       -4.13146599e-01, -1.04313240e+00,  6.57087363e-01, -8.29735182e-03,\n",
       "        1.21314491e+00,  9.56489989e-01, -6.98155438e-01,  2.34528763e-02,\n",
       "       -1.13178210e+00, -1.52785012e+00, -1.34760754e+00,  3.30109933e-01,\n",
       "        3.90312464e-02, -1.54419825e+00,  1.05468263e+00,  1.61898401e+00,\n",
       "        1.00047793e+00, -1.07091249e+00, -2.91641276e-01, -1.62448840e+00,\n",
       "       -1.32627671e+00, -1.50247645e+00, -1.32591028e+00, -1.43889527e+00,\n",
       "       -5.52155250e-01,  9.21475129e-01,  2.60824839e-01, -3.62047273e-01,\n",
       "       -3.28950311e+00, -1.50841481e+00, -5.59341968e-01, -1.63116741e+00,\n",
       "        2.78308698e+00,  1.28768057e+00,  1.27369423e-03, -1.09080308e-01,\n",
       "        2.54584734e+00,  1.13355568e+00,  6.55748006e-01, -2.68510222e-01,\n",
       "       -4.87512379e+00, -3.06328551e+00, -3.58508962e-01, -1.64841081e+00,\n",
       "        1.69036195e+00, -1.23097703e+00,  2.52637946e+00, -4.81529723e-03,\n",
       "       -4.58486664e-01, -9.68415170e-02,  1.50268161e+00,  1.60311768e+00,\n",
       "        5.87837282e-01,  2.88593742e-01, -1.09275903e+00,  3.50999065e-01,\n",
       "        1.22834788e+00, -8.71019344e-01,  5.68645922e-01,  1.32026706e+00])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sent_avg_vec(q_content[1].lower().split(), selected, idf=idf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:19:18.736087Z",
     "start_time": "2020-06-18T03:19:18.061626Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "X = []\n",
    "chit_idx = []\n",
    "for i in range(len(q_content)):\n",
    "    try:\n",
    "        X.append(sent_avg_vec(q_content[i].lower().split(), selected, idf=idf))\n",
    "    except Exception:\n",
    "        # print(i, ' ', content.question[i])\n",
    "        chit_idx.append(i)\n",
    "        continue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:19:26.324452Z",
     "start_time": "2020-06-18T03:19:26.150358Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "31976"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:19:48.742320Z",
     "start_time": "2020-06-18T03:19:48.503252Z"
    }
   },
   "outputs": [],
   "source": [
    "X = np.array(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:19:53.167864Z",
     "start_time": "2020-06-18T03:19:53.004835Z"
    }
   },
   "outputs": [],
   "source": [
    "A = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:23:55.818025Z",
     "start_time": "2020-06-18T03:23:46.037148Z"
    },
    "scrolled": false,
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SphericalKMeans(copy_x=True, init='k-means++', max_iter=300, n_clusters=2,\n",
       "        n_init=10, n_jobs=1, normalize=True, random_state=None, tol=0.0001,\n",
       "        verbose=0)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from spherecluster import SphericalKMeans\n",
    "skm = SphericalKMeans(n_clusters=)\n",
    "skm.fit(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:44:39.978757Z",
     "start_time": "2020-06-18T03:44:39.806491Z"
    }
   },
   "outputs": [],
   "source": [
    "import random\n",
    "\n",
    "idx = random.sample(range(0, 10000), 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:47:11.664929Z",
     "start_time": "2020-06-18T03:47:11.475891Z"
    }
   },
   "outputs": [],
   "source": [
    "def test(idx):\n",
    "    for i in idx:\n",
    "        print(q_content[i])\n",
    "        try:\n",
    "            print(skm.predict(sent_avg_vec(q_content[i].lower().split(), selected, idf=idf).reshape(1, -1)))\n",
    "        except Exception:\n",
    "            continue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:46:15.507282Z",
     "start_time": "2020-06-18T03:46:15.333286Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你 到底 在 做 什么\n",
      "[1]\n",
      "你 其实 挺笨 的\n",
      "[1]\n",
      "你 可 不 可以 陪 我 打蓝球 啊\n",
      "[1]\n",
      "ATM CRS 还 信用卡 到账 时间\n",
      "[0]\n",
      "那 我 应该 怎么 办 呢\n",
      "[1]\n",
      "我 现在 不 能 接听 电话\n",
      "[0]\n",
      "随身 携带\n",
      "[0]\n",
      "过 得 好 吗\n",
      "辛苦 啦\n",
      "[1]\n",
      "问 你 个 问题 请问 世界 上 什么 鼠用 2 只 脚 走路 回答 袋鼠 不 对\n",
      "[1]\n"
     ]
    }
   ],
   "source": [
    "test(idx)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:55:26.587109Z",
     "start_time": "2020-06-18T03:55:26.405103Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "from sklearn.cluster import SpectralClustering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:47:51.486732Z",
     "start_time": "2020-06-18T03:47:44.558980Z"
    }
   },
   "outputs": [],
   "source": [
    "kmeans = KMeans(n_clusters=2, random_state=0).fit(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T04:02:22.637432Z",
     "start_time": "2020-06-18T03:56:07.847463Z"
    }
   },
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-64-adef95a0628e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSpectralClustering\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn_clusters\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mD:\\ProgramData\\envs\\nlpLearning\\lib\\site-packages\\sklearn\\cluster\\spectral.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y)\u001b[0m\n\u001b[0;32m    491\u001b[0m                                            \u001b[0mn_init\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mn_init\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    492\u001b[0m                                            \u001b[0meigen_tol\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0meigen_tol\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 493\u001b[1;33m                                            assign_labels=self.assign_labels)\n\u001b[0m\u001b[0;32m    494\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    495\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\envs\\nlpLearning\\lib\\site-packages\\sklearn\\cluster\\spectral.py\u001b[0m in \u001b[0;36mspectral_clustering\u001b[1;34m(affinity, n_clusters, n_components, eigen_solver, random_state, n_init, eigen_tol, assign_labels)\u001b[0m\n\u001b[0;32m    262\u001b[0m                               \u001b[0meigen_solver\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0meigen_solver\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    263\u001b[0m                               \u001b[0mrandom_state\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 264\u001b[1;33m                               eigen_tol=eigen_tol, drop_first=False)\n\u001b[0m\u001b[0;32m    265\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    266\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0massign_labels\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'kmeans'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\envs\\nlpLearning\\lib\\site-packages\\sklearn\\manifold\\spectral_embedding_.py\u001b[0m in \u001b[0;36mspectral_embedding\u001b[1;34m(adjacency, n_components, eigen_solver, random_state, eigen_tol, norm_laplacian, drop_first)\u001b[0m\n\u001b[0;32m    211\u001b[0m       \u001b[0mhttps\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m//\u001b[0m\u001b[0mdoi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0morg\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m10.1137\u001b[0m\u001b[1;33m%\u001b[0m\u001b[1;36m2\u001b[0m\u001b[0mFS1064827500366124\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    212\u001b[0m     \"\"\"\n\u001b[1;32m--> 213\u001b[1;33m     \u001b[0madjacency\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcheck_symmetric\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0madjacency\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    214\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    215\u001b[0m     \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\envs\\nlpLearning\\lib\\site-packages\\sklearn\\utils\\validation.py\u001b[0m in \u001b[0;36mcheck_symmetric\u001b[1;34m(array, tol, raise_warning, raise_exception)\u001b[0m\n\u001b[0;32m    875\u001b[0m         \u001b[0msymmetric\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mabs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdiff\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m<\u001b[0m \u001b[0mtol\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    876\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 877\u001b[1;33m         \u001b[0msymmetric\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mallclose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0marray\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mT\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0matol\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtol\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    878\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    879\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0msymmetric\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<__array_function__ internals>\u001b[0m in \u001b[0;36mallclose\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\envs\\nlpLearning\\lib\\site-packages\\numpy\\core\\numeric.py\u001b[0m in \u001b[0;36mallclose\u001b[1;34m(a, b, rtol, atol, equal_nan)\u001b[0m\n\u001b[0;32m   2157\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2158\u001b[0m     \"\"\"\n\u001b[1;32m-> 2159\u001b[1;33m     \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0misclose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mb\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrtol\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mrtol\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0matol\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0matol\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mequal_nan\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mequal_nan\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2160\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mbool\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mres\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2161\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<__array_function__ internals>\u001b[0m in \u001b[0;36misclose\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\envs\\nlpLearning\\lib\\site-packages\\numpy\\core\\numeric.py\u001b[0m in \u001b[0;36misclose\u001b[1;34m(a, b, rtol, atol, equal_nan)\u001b[0m\n\u001b[0;32m   2258\u001b[0m     \u001b[0myfin\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0misfinite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2259\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mxfin\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0myfin\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2260\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mwithin_tol\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0matol\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrtol\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2261\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2262\u001b[0m         \u001b[0mfinite\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mxfin\u001b[0m \u001b[1;33m&\u001b[0m \u001b[0myfin\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\ProgramData\\envs\\nlpLearning\\lib\\site-packages\\numpy\\core\\numeric.py\u001b[0m in \u001b[0;36mwithin_tol\u001b[1;34m(x, y, atol, rtol)\u001b[0m\n\u001b[0;32m   2244\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mwithin_tol\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0matol\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrtol\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2245\u001b[0m         \u001b[1;32mwith\u001b[0m \u001b[0merrstate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minvalid\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'ignore'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2246\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mless_equal\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mabs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0matol\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mrtol\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mabs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2247\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2248\u001b[0m     \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0masanyarray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "sc = SpectralClustering(n_clusters=2, random_state=0).fit(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:48:50.858089Z",
     "start_time": "2020-06-18T03:48:50.655052Z"
    }
   },
   "outputs": [],
   "source": [
    "def test(idx):\n",
    "    for i in idx:\n",
    "        print(q_content[i])\n",
    "        try:\n",
    "            print(kmeans.predict(sent_avg_vec(q_content[i].lower().split(), selected, idf=idf).reshape(1, -1)))\n",
    "        except Exception:\n",
    "            continue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-06-18T03:49:03.863487Z",
     "start_time": "2020-06-18T03:49:03.669529Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "你 到底 在 做 什么\n",
      "[0]\n",
      "你 其实 挺笨 的\n",
      "[0]\n",
      "你 可 不 可以 陪 我 打蓝球 啊\n",
      "[0]\n",
      "ATM CRS 还 信用卡 到账 时间\n",
      "[1]\n",
      "那 我 应该 怎么 办 呢\n",
      "[0]\n",
      "我 现在 不 能 接听 电话\n",
      "[1]\n",
      "随身 携带\n",
      "[1]\n",
      "过 得 好 吗\n",
      "辛苦 啦\n",
      "[0]\n",
      "问 你 个 问题 请问 世界 上 什么 鼠用 2 只 脚 走路 回答 袋鼠 不 对\n",
      "[0]\n"
     ]
    }
   ],
   "source": [
    "test(idx)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sklearn as skl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'0.22.2'"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "skl.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [],
   "source": [
    "del kmeans"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.6.8 64-bit",
   "language": "python",
   "name": "python36864bit023718609e434315a7782a7404fb6072"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "194.797px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
